vue-cli + webpack + babel + es6 + vue路由 + vue交互 + vue2.0开发spa单页应用demo
Vue2.0 推荐开发环境
- git(主要使用git Bash书写命令)
- NodeJs(不只是一门后台语言,还是优秀的构建工具)
- npm (NodeJs默认的包管理器,当然还有别的:Yarn)
- webpack (Vue的组件是.vue,像微信小程序的.wxml、wxss,浏览器不能直接解析,需要编译和打包成.js文件)
- vue-cli(为Vue生成固定工程模板的,就像Express生成的文件结构)
安装Git(按顺序安装即可)
- Git-1.8.5.2-preview20131230.exe
- TortoiseGit-1.8.7.0-64bit.msi
- TortoiseGit-LanguagePack-1.8.7.0-64bit-zh_CN.msi
安装NodeJs(推荐6.9.1LTS)
NPM(NodeJs安装完自带npm)
- 安装到本地包命令:npm install xxx 简写:npm i xxx
- 安装到全局的命令:npm install xxx -g 简写:npm i xxx -g
- 安装到依赖:npm install xxx –save 简写:npm i xxx -S
- 安装开发时的依赖:npm install xxx –dev 简写:npm i xxx -D
- 卸载本地包:npm uninstall xxx
- 卸载全局包:npm uninstall xxx -g
- 更新本地包:npm update xxx
- 更新全局包:npm update xxx -g
- 查看全局安装的包:npm ls -g
- 清空npm本地缓存:npm cache clear
- 创建工程文件(package.json):npm init –yes
- 查看npm版本:npm -v
- 查看npm所有命令:npm help
- 安装淘宝npm镜像:npm install -g cnpm –registry=https://registry.npm.taobao.org
- 使用淘宝npm镜像包:cnpm install xxx
- 使用淘宝npm镜像包:cnpm install xxx -g
安装webpack
npm install webpack -g 或者 cnpm install webpack -g
1234567891011121314151617181920212223242526272829#配置文件:webpack.config.jsvar path = require('path')var webpack = require('webpack')module.exports = {entry: './src/app.js',output: {path: path.resolve(__dirname, './dist'),publicPath: './dist/',filename: 'build.js'},module: {rules: [{test: /\.vue$/,loader: 'vue-loader'},{test: /\.css$/,loader: 'style|css',exclude: /node_modules/},{test: /\.js$/,loader: 'babel-loader',exclude: /node_modules/}]}}- entry:文件入口,webpack会从入口点设置的js文件开始对项目进行构建
- output:文件出口,打包好的js文件输出的路径和文件名
- module:主要是loaders,这是webpack打包的解析器:vue、scss都要用npm安装相应的loader才能进行解析
- plugins:指定webpack的插件,跟解析的语言无关,经常用来辅助构建,提供丰富的附加功能。
- 根据实际的项目需要,结合一些webpack插件,可以实现很强大的功能,不需要另外使用gulp或者grunt。
生成hash指纹:
123456789#hash:根据编译时资源对应的编译进程计算hash值#chunkhash:根据模块内容计算hash值#contenthash:根据文件的内容计算hash值output:{filename:'[name].[hash:8].js',filename:'[name].[chunkhash:8].js',filename:'[name].[contenthash:8].js'}webpack提供了hash/chunkhash/contenthash三种生成生成规则,[hash:8]中的8是hash的位数
安装vue脚手架(类似express-generator)
- 安装到全局:npm install vue-cli -g
- 使用vue-cli init webpack xxx
- 使用vue-cli init webpack-simple xxx
- 使用vue-cli init browserify xxx
- 使用vue-cli init browserify-simple xxx
- 使用vue-cli init simple xxx
- 我常用的:vue-cli init webpack-simple xxx12345678910111213141516171819202122232425262728293031Administrator@VMTO /F/test$ vue init webpack-simple aaaA newer version of vue-cli is available.latest: 2.5.1installed: 2.4.0This will install Vue 2.x version of template.For Vue 1.x use: vue init webpack-simple#1.0 aaa? Project name (aaa) #回车,项目名默认aaa? Project description (A Vue.js project) #回车,项目描述默认A Vue.js project? Author vmto <vmto@qq.com> #回车,默认作者和邮箱vue-cli · Generated "aaa".To get started:cd aaanpm installnpm run dev#aaa文件结构:src #项目源文件.babelrc #babel转译规则(es6转es5、es7转es5).gitignore #指定哪些文件不用提交到git仓库index.html #项目预览入口package.json #项目管理文件README.md #项目描述文件webpack.config.js #webpack配置文件
安装项目依赖(vue-cli用不到了)
- npm install 或者 cnpm install
- 启动项目:npm run dev
- 如果有问题,试试把npm升级到最新:npm update -g
- 如果有问题,试试把vue-cli升级到最新:npm update vue-cli
- 遇到Module build failed: Error: Cannot find module ‘模块名’,那就安装
- npm run dev,之后,浏览器会自动打开http://localhost:8080/
开始踩坑之旅
|
|
第一个坑:每个组件的template里面只能有一个并列的 div
第二个坑:组件里的data不能直接return数据,要把数据放在json对象里面
踩坑之[组件间css冲突]
改造App.vue,增加子组件
新建component目录,新建Box.vue组件
显示效果:
- hello App
- hello Box
一个小坑:
颜色被子组件覆盖,组件化不是能解决命名冲突吗?那说的是js变量名、函数名
css需在style标签上加上scoped,这是H5的新特性,其实不怪vue
修正后的颜色:
- hello App
- hello Box
踩坑之[vue-router]
首先用npm下载vue-router
新增 router.js ,并配置路由规则
router.js中用到的组件,foo和bar内容差不多
修改 src/App.vue
修改 src/main.js 引入并使用vue-router
坑太多太多了,集中列出来:
踩坑之[vue-resource]
首先用npm下载vue-resource
修改 main.js ,引入并使用vue-resource
foo和bar组件内容差不多
坑太多太多了,集中列出来: