前端最基础的就是 HTML+CSS+Javascript
。掌握了这三门技术就算入门,但也仅仅是入门,如今前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS
),本着提高技术水平,打牢基础知识的中心思想,咱们开课啦(每周四)。css
前面咱们学习 vue 基本的使用,如今咱们要开始更好的使用 vue 。
通常来讲咱们使用 vue 无非下面几种方式html
webpack 的方式也是咱们今天要讲的,不过 webpack 配置太繁琐了。咱们直接上 vue-cli。前端
能够看到,经过 webpack 等工具咱们可让前端项目更加健壮,并且也解决了许多痛点。vue
vue-cli 是 vue 的脚手架,能够快速配置一个开发环境,基于 Vue.js 进行快速开发的完整系统。html5
前端就一个问题,更新贼快,基本不兼容,本文基于 vue-cli@4.3.1 版本。node
Vue CLI 致力于将 Vue 生态中的工具基础标准化。
它确保了各类构建工具可以基于智能的默认配置便可平稳衔接,这样你能够专一在撰写应用上,而没必要花好几天去纠结配置的问题。
它也为每一个工具提供了调整配置的灵活性,无需 eject。linux
Vue CLI 须要 Node.js 8.9 或更高版本 (推荐 8.11.0+,其实我感受 10.x 是极好,12.x 最好先不要上)。你可使用 nvm 或 nvm-windows 在同一台电脑中管理多个 Node 版本webpack
# 使用 npm 全局安装 npm install -g @vue/cli # OR 使用 yarn 全局安装 yarn global add @vue/cli # 查看 vue-cli 版本 vue -V
# 使用命令提示行建立一个项目 vue create lilnong-top-cli # OR 使用可视化界面建立一个项目 vue ui
Please pick a preset:git
manually select features
手动选择,自由组合(Babel、TS、PWA、Router、Vuex、css pre-processors、linter/formatter、Unit Testing、E2E Testing)github
()=>
等。TS 是指代码基于 TS 来编写,固然仍是会编译成 JS 来在浏览器中执行的。
css pre-processors 就是 postcss、sass 之类的预处理工具。
linter/formatter 代码语法检测/代码美化
Pick the package manager to use when installing dependencise
使用 vue serve
和 vue build
命令对单个 *.vue
文件进行快速原型开发,不过这须要先额外安装一个全局的扩展:
npm install -g @vue/cli-service-global
vue serve
的缺点就是它须要安装全局依赖,这使得它在不一样机器上的一致性不能获得保证。所以这只适用于快速原型开发。
vue serve MyComponent.vue
- lilnong-top-cli: project项目文件 -- .gitignore -- babel.config.js: babel 配置文件 -- node_modules: 包 -- package-lock.json -- package.json:webpack 配置文件,vue-cli 也是使用 webpack 的,因此主要看这个文件。 -- public: 资源 -- README.md -- src: 代码
~/
是指当前用户目录,好比我,登录用户名是 linong
,linux 中就是 /home/linong
,window 中是 C:\Users\linong
。
~/.vuerc
保存的是手动选择特性。在操做提示的最后你能够选择将已选项保存为一个未来可复用的 preset。
Vue CLI 使用了一套基于插件的架构。
若是你查阅一个新建立项目的 package.json
,就会发现依赖都是以 @vue/cli-plugin-
开头的。
插件能够修改 webpack 的内部配置,也能够向 vue-cli-service
注入命令。
在项目建立的过程当中,绝大部分列出的特性都是经过插件来实现的。
基于插件的架构使得 Vue CLI 灵活且可扩展。若是你对开发一个插件感兴趣,请翻阅插件开发指南。
能够经过 vue ui
命令使用 GUI 安装和管理插件,可使用命令行的方式 vue add eslint
。
建议使用 vue ui ,图形化的界面仍是比较容易使用
该部分不重要,能够直接掠过
Usage: serve [options] [entry] 在开发环境模式下零配置为 .js 或 .vue 文件启动一个服务器 Options: -o, --open 打开浏览器 -c, --copy 将本地 URL 复制到剪切板 -h, --help 输出用法信息
Usage: build [options] [entry] 在生产环境模式下零配置构建一个 .js 或 .vue 文件 Options: -t, --target <target> 构建目标 (app | lib | wc | wc-async, 默认值:app) -n, --name <name> 库的名字或 Web Components 组件的名字 (默认值:入口文件名) -d, --dest <dir> 输出目录 (默认值:dist) -h, --help 输出用法信息
建立一个由 `vue-cli-service` 提供支持的新项目 用法:create [options] <app-name> 选项: -p, --preset <presetName> 忽略提示符并使用已保存的或远程的预设选项 -d, --default 忽略提示符并使用默认预设选项 -i, --inlinePreset <json> 忽略提示符并使用内联的 JSON 字符串预设选项 -m, --packageManager <command> 在安装依赖时使用指定的 npm 客户端 -r, --registry <url> 在安装依赖时使用指定的 npm registry -g, --git [message] 强制 / 跳过 git 初始化,并可选的指定初始化提交信息 -n, --no-git 跳过 git 初始化 -f, --force 覆写目标目录可能存在的配置 -c, --clone 使用 git clone 获取远程预设选项 -x, --proxy 使用指定的代理建立项目 -b, --bare 建立项目时省略默认组件中的新手指导信息 -h, --help 输出使用帮助信息
这个命令就是咱们 npm run serve
执行的 "serve": "vue-cli-service serve",
用法:vue-cli-service serve [options] [entry] 选项: --open 在服务器启动时打开浏览器 --copy 在服务器启动时将 URL 复制到剪切版 --mode 指定环境模式 (默认值:development) --host 指定 host (默认值:0.0.0.0) --port 指定 port (默认值:8080) --https 使用 https (默认值:false)
这个是 npm run build
时执行代码
用法:vue-cli-service build [options] [entry|pattern] 选项: --mode 指定环境模式 (默认值:production) --dest 指定输出目录 (默认值:dist) --modern 面向现代浏览器带自动回退地构建应用 --target app | lib | wc | wc-async (默认值:app) --name 库或 Web Components 模式下的名字 (默认值:package.json 中的 "name" 字段或入口文件名) --no-clean 在构建项目以前不清除目标目录 --report 生成 report.html 以帮助分析包内容 --report-json 生成 report.json 以帮助分析包内容 --watch 监听文件变化
咱们知道兼容性分为 JS 兼容性、CSS 兼容性、html 兼容性
vue-cli 使用 package.json
文件里的 browserslist
字段 (或一个单独的 .browserslistrc
文件),指定了项目的目标浏览器的范围。这个值会被 @babel/preset-env 和 Autoprefixer 用来肯定须要转译的 JavaScript 特性和须要添加的 CSS 浏览器前缀。了解如何指定浏览器范围。
html 兼容性,比较小众,并且 vue 也有必定的兼容性要求,因此就不放开说了。
JS 兼容性,这里分为几种:语法兼容性、特性兼容、函数方法兼容性
Object.defineProperty()
、 Proxy
babel-polyfill
解决个差很少。好比说 Promise、String.prototype.padStart 之类的。若是以前使用了 node 能够先删除掉
使用 nvm 安装对应版本的 nodejs
# 安装 10.20.1 版本 nvm install 10.20.1 # 切换版本为 10.20.1 nvm use 10.20.1 # 查看 node 版本 node -v # 切换资源源 nvm npm_mirror https://npm.taobao.org/mirrors/npm/