7.第一个vue-cli项目
什么是vue-cli
vue-cli 官方提供的一个脚手架,用于快速生成一个 vue 的项目模板;
预先定义好的目录结构及基础代码,就好比在创建 Maven 项目时可以选择创建一个骨架项目,这个骨架项目就是脚手架;
主要的功能:
- 统一的目录结构
- 本地调试
- 热部署
- 单元测试
- 集成打包上线
需要的环境
Node.js : http://nodejs.cn/download/
安装就无脑下一步。
确认nodejs安装成功:
- cmd 下输入
node -v
,查看是否能够正确打印出版本号! - cmd 下输入
npm -v
,查看是否能够正确打印出版本号!
这个npm,是一个软件包管理工具,和linux下的apt软件安装差不多!(npm是Node.js自带)
安装 Node.js 淘宝镜像加速器(cnpm)
1 | #cmd管理员模式下输入以下指令 |
安装的位置:C:\Users\用户\AppData\Roaming\npm
安装 vue-cli
1 | cnpm install vue-cli -g |
第一个 vue-cli 应用程序
创建一个Vue项目:随便建立一个空的文件夹,如
D:\Project\vue-study
;创建一个基于 webpack 模板的 vue 应用程序(在上述文件夹下打开cmd)
1
2# 这里的 myvue 是项目名称,可根据需求起名
vue init webpack myvue前几个直接回车;
后面的一路都选择no即可(最后一步,选自己创建模板)
命令行内容说明:
- Project name:项目名称,默认 回车 即可
- Project description:项目描述,默认 回车 即可
- Author:项目作者,默认 回车 即可
- Install vue-router:是否安装 vue-router,选择 n 不安装(后期需要再手动添加)
- Use ESLint to lint your code:是否使用 ESLint 做代码检查,选择 n 不安装(后期需要再手动添加)
- Set up unit tests:单元测试相关,选择 n 不安装(后期需要再手动添加)
- Setup e2e tests with Nightwatch:单元测试相关,选择 n 不安装(后期需要再手动添加)
- Should we run npm install for you after the project has been created:创建完成后直接初始化,选择 n,我们手动执行;运行结果!
初始化并运行
1 | cd myvue |
运行成功界面:
浏览器输入:http://localhost:8080,可看到Vue界面。
Vue-cli目录结构
我们用IDEA,open刚才的项目(myvue)
- build 和 config:WebPack 配置文件
- node_modules:用于存放 npm install 安装的依赖文件
- src: 项目源码目录
- static:静态资源文件
- .babelrc:Babel 配置文件,主要作用是将 ES6 转换为 ES5
- .editorconfig:编辑器配置
- eslintignore:需要忽略的语法检查配置文件
- .gitignore:git 忽略的配置文件
- .postcssrc.js:css 相关配置文件,其中内部的 module.exports 是 NodeJS 模块化语法
- index.html:首页,仅作为模板页,实际开发时不使用
- package.json:项目的配置文件
- name:项目名称
- version:项目版本
- description:项目描述
- author:项目作者
- scripts:封装常用命令
- dependencies:生产环境依赖
- devDependencies:开发环境依赖
src 目录
src
目录是项目的源码目录,所有代码都会写在这里
main.js
项目的入口文件,所有的项目程序都会有一个入口。
1 | // The Vue build version to load with the `import` command |
import Vue from 'vue'
:ES6 写法,会被转换成 require(“vue”); (require 是 NodeJS 提供的模块加载器)import App from './App'
:意思同上,但是指定了查找路径,./ 为当前目录Vue.config.productionTip = false
:关闭浏览器控制台关于环境的相关提示new Vue({...})
:实例化 Vueel: '#app'
:查找 index.html 中 id 为 app 的元素template: ''
:模板,会将 index.html 中<div id="app"></div>
替换为<App />
components: { App }
:引入组件,使用的是import App from './App'
定义的 App 组件;
App.vue
1 | <template> |
- template:HTML 代码模板,会替换
<App />
中的内容 - import HelloWorld from ‘./components/HelloWorld’:引入
HelloWorld
组件,用于替换template
中的<HelloWorld/>
- export default{…}:导出 NodeJS 对象,作用是可以通过
import
关键字导入- name: ‘App’:定义组件的名称
- components: { HelloWorld }:定义子组件
在hello,Vue中,关于 <style scoped>
的说明:CSS 样式仅在当前组件有效,声明了样式的作用域,是当前的界面私有的!