初始化脚手架
说明
- Vue脚手架是Vue官方提供的标准化开发工具(开发平台)
- 最新的版本是 4.x
- 文档地址: Vue CLI
具体步骤
- 如果下载缓慢请配置
npm淘宝镜像
npm config set registry http://registry.npm.taobao.org
- 全局安装
@vue/cli npm install -g @vue/cli
- 切换到创建项目的目录,使用命令创建项目
vue create xxx
- 选择使用
vue
的版本
- 启动项目
npm run serve
- 打包项目
npm run build
- 暂停项目
Ctrl+C
Vue
脚手架隐藏了所有webpack
相关的配置,若想查看具体的webpack
配置,请执行
vue inspect > output.js
脚手架文件结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| .文件目录 ├── node_modules ├── public │ ├── favicon.ico: 页签图标 │ └── index.html: 主页面 ├── src │ ├── assets: 存放静态资源 │ │ └── logo.png │ │── component: 存放组件 │ │ └── HelloWorld.vue │ │── App.vue: 汇总所有组件 │ └── main.js: 入口文件 ├── .gitignore: git版本管制忽略的配置 ├── babel.config.js: babel的配置文件 ├── package.json: 应用包配置文件 ├── README.md: 应用描述文件 └── package-lock.json: 包版本控制文件
|
src/components/School.vue
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
| <template> <div class="demo"> <h2>学校名称:{{ name }}</h2> <h2>学校地址:{{ address }}</h2> <button @click="showName">点我提示学校名</button> </div> </template>
<script> export default { name: "School", data() { return { name: "小蒲学习笔记", address: "上海", }; }, methods: { showName() { alert(this.name); }, }, }; </script>
<style> .demo { background-color: orange; } </style>
|
src/components/Student.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <template> <div> <h2>学生姓名:{{ name }}</h2> <h2>学生年龄:{{ age }}</h2> </div> </template>
<script> export default { name: "Student", data() { return { name: "小蒲", age: 18, }; }, }; </script>
|
src/App.vue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <template> <div> <img src="./assets/logo.png" alt=""> <School></School> <Student></Student> </div> </template>
<script> import School from './components/School.vue' import Student from './components/Student.vue'
export default { name:'App', components:{ School, Student } } </script>
|
src/main.js
1 2 3 4 5 6 7 8 9 10 11
|
import Vue from 'vue' import App from './App.vue'
Vue.config.productionTip = false
new Vue({ el:'#app', render: h => h(App), })
|
public/index.html
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
| <!DOCTYPE html> <html lang=""> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="icon" href="<%= BASE_URL %>favicon.ico"> <title><%= htmlWebpackPlugin.options.title %></title> </head> <body> <noscript> <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> </noscript> <div id="app"></div> </body> </html>
|

render函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import Vue from 'vue' import App from './App.vue'
Vue.config.productionTip = false
new Vue({ el:'#app', render: h => h(App), })
|
关于不同版本的函数
vue.js
与vue.runtime.xxx.js
的区别
vue.js
是完整版的Vue
,包含:核心功能+模板解析器
vue.runtime.xxx.js
是运行版的Vue
,只包含核心功能
,没有模板解析器
esm
就是 ES6 module
- 因为
vue.runtime.xxx.js
没有模板解析器,所以不能使用template
配置项,需要使用render
函数接收到的createElement
函数去指定具体内容
vue.config.js 配置文件
vue inspect > output.js
可以查看到Vue
脚手架的默认配置
使用vue.config.js
可以对脚手架进行个性化定制,和package.json
同级目录,详见 配置参考 | Vue CLI
1 2 3 4 5 6 7 8
| module.exports = { pages: { index: { entry: 'src/index/main.js' } }, lineOnSave: false }
|