Vue.js 填坑日志

最近在学习Vue.js, 发现自己有很多前端的坑需要进行填充, 所以现在只能边学框架边打基础来继续我的前端学习之路

Vue-cli 的简单使用

Vue-cli 是Vue.js 官方的工具, 能快速搭建起基于Vue.js 和 webpack的脚手架应用. Vue-cli 提供了 vue ui 的指令, 能在web 页面快速创建新的应用.


简单上手

安装配置Vue-cli 主要有如下几个步骤:

  1. 配置node.js 环境和cnpm
  2. 安装vue-cli
配置node.js 环境和 cnpm

首先从官网下载好 node.js 的二进制包, 下载地址为

1
https://nodejs.org/dist/v12.6.0/node-v12.6.0-linux-x64.tar.xz

下载好之后, 解压到特定目录并将目录下的bin目录的完整路径引入到

1
PATH

变量里.

完成之后, 就能愉快的使用npm 命令了.

然后使用

1
npm install -g cnpm

来使用国内淘宝的npm 镜像服务, 提升使用体验.(如果放入非家目录下, 则需要

1
sudo

执行)

装好之后, 我们进入下一步.

安装vue-cli

打开命令行执行

1
cnpm install -g @vue/cli

命令. 看到提示安装完成后, 即可使用.


简单使用

在完成了vue-cli的安装之后, 即可使用

1
vue ui

命令来启动网页端的vue 项目管理工具. 可以用于快速建立, 配置项目, 插件搜索与安装等一系列快捷操作.

 

 

Vue的前端学习

由于最近要努力学习前端并努力做好技术储备,所以需要学习最近很火的Vue.js框架。

Vue.js框架很火,而且使用起来及其方便,为了更好的学习前端。嘻嘻,也是为了更高的工资

 

首先前端需要很多基础知识,HTML + CSS + JavaScript, 这一系列的知识也做了初步了解,但是在用学习框架上来说,还是有点吃力。

Vue作为响应式框架,很多都是在网页上声明引用就可以直接使用了的。

但是没有接触过Node.js的我在学习到Vue cli的时候十分费劲。此博文作为学习了一个多月前端的我,经验总结与实际操作疑问记录。

希望在以后的使用和调试过程中,能为自己提供更多的启发与思考。

Python-Django默认设定(避免踩坑)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
"""
Django settings for my_plaform project.

Generated by 'django-admin startproject' using Django 2.1.7.

For more information on this file, see
https://docs.djangoproject.com/en/2.1/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.1/ref/settings/
"""


import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'jk^@fmftf6s6&!0yphdh9)eaf=i)%n!a8kbmrb^lbyp%)&1ixw'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['*']


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'service_info'
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'my_plaform.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'template'),
                 os.path.join(BASE_DIR, 'static'),],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'my_plaform.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

# Internationalization
# https://docs.djangoproject.com/en/2.0/topics/i18n/

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'PRC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/


STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

Python 回调函数研究

回调函数可能会完成各种高级的处理任务, 涉及线程、进程和定时器。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import re


def apply_async(func, args, *, callback):
    result = func(*args)
    callback(result)


def print_result(result):
    print('Got: ', result)


def add(x, y):
    return x + y


# apply_async(add, (2, 3), callback=print_result)
# Got: 5
class ResultHandler:
    def __init__(self):
        self.s = 0

    def handler(self, result):
        self.s += 1
        print('[{}] Got: {}'.format(self.s, result))


r = ResultHandler()

apply_async(add, (2,3), callback=r.handler) # [1] Got: 5
apply_async(add, (2,3), callback=r.handler) # [2] Got: 5

Python dqdm 进度条库初步使用探索

tqdm 是一个简单而且功能强大的进度条库, 可以用来在命令行输出直观并且美观的进度条提示.

这里我使用了简单的一个功能. 用于在每项任务完成后都能刷新进度, 并输出提示


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/python3
from tqdm import trange
import time

f = trange(10)
'更改当前进度条的描述'
f.set_description('I buy something')
'此处的输出不会使进度条换行'
f.write('there too many things')
time.sleep(1)
f.update(1)
f.write('is too hard to cook')
f.set_description('I cook something')
time.sleep(3)
f.update(3)
f.write('Oh my god')
f.set_description('I eat someting')
time.sleep(6)
f.update(6)
'完成后关闭对象'
f.close()

执行效果如下图所示