VUE CLI脚手架搭建项目流程
一 安装node环境
二 安装vue的cli脚手架环境
2.1 脚手架的概述
Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供:
通过
@vue/cli
搭建交互式的项目脚手架。通过
@vue/cli
+@vue/cli-service-global
快速开始零配置原型开发。-
一个运行时依赖 (
@vue/cli-service
),该依赖:
- 可升级;
- 基于 webpack 构建,并带有合理的默认配置;
- 可以通过项目内的配置文件进行配置;
- 可以通过插件进行扩展。
一个丰富的官方插件集合,集成了前端生态中最好的工具。
一套完全图形化的创建和管理 Vue.js 项目的用户界面。
Vue CLI 致力于将 Vue 生态中的工具基础标准化。它确保了各种构建工具能够基于智能的默认配置即可平稳衔接,这样你可以专注在撰写应用上,而不必花好几天去纠结配置的问题。与此同时,它也为每个工具提供了调整配置的灵活性,无需 eject
脚手架基本概念
- 把.vue翻译成浏览器可以识别的内容
- 自动刷新浏览器
- 自动压缩代码
- 自动的把js翻译为低版本的js
- 作为代理服务器
- 等
=> 单文件组件 xxx.vue 浏览器默认识别不了 需要借助脚手架工具 Vue-cli
单文件组件 => 用一个文件能够包含组件的所有内容 **( 样式 / 结构 / 逻辑 )
2.2 脚手架的安装
官网
安装
在小黑窗中输入
npm install -g @vue/cli
, 在任意的路径都可以下图表示安装成功 =>
-
安装失败的解决方案
更换网络环境:有线,换无线,无线换4G
-
更换安装的工具
cnpm
:cnpm install -g @vue/cli
yarn
:yarn global add @vue/cli
-
清除npm缓存之后,重新安装
npm cache clean -f
重新执行安装的命令
命令查看是否成功
vue --version
三 基于cli创建vue项目
3.1 Vue-cli项目创建
传送门
<1> Vue-cli项目创建的命令
vue create 项目名
<2>运行以下命令来创建一个新项目:
vue create hello-world
说明
- 创建之后会多一个项目文件夹,路径不要乱选
- 项目名不要有中文,不要有大写字母,尽可能有意义
<3> 弹出的对话框先选择默认的选项 => 按enter键
<4> 等进度条走完 提示如下显示说明成功
3.2 npm i 安装第三方包
安装报错的分析与解决
网络问题
终端的权限问题;新建管理员模式的终端
当前这个文件夹,这个文件被其他软件占用:关闭所有可能影响的软件(重启)
-
npm包管理工具的问题:
用yarn来安装
执行
npm cache clean -f
在重新创建项目
-
创建项目时,由于到了第三方模块,文件太多 , git认为没有必要管,提示你一下
vue-cli创建项目时,已经设置了git忽略文件 就在
.gitignore
中 , 可以在里面设置也可以直接忽略
3.3 进入项目文件夹 运行项目
(1) cd 项目名
(2) npm run serve
出现如下显示说明成功
3.4 Vue-cli项目结构说明
(一 基本结构)
index.html页面的作用是把vue实例放置在页面中,一般不在此写东西
写脚手架的目标的就是把逻辑和组件从html文件中抽取出来
vue-cli文件组成
- main.js 主要的文件,所有和顶级vue实例相关的都放到这里
- App.vue 最顶级的组件,仅次于 Vue实例,看到的顶级页面结构一般放在这里
- components 组件的文件夹
- assets 静态资源
(二 src目录结构)
-
main.js中
创建了最外层的Vue实例
把App.vue这个组件,当做Vue实例内部的最顶级组件并渲染出来
与
public/index.html
中的那个id为app
的div关联起来
-
App.vue 最顶级的那个组件,仅次于
Vue实例
- App.vue是Vue实例的第一个组件,也是最顶级的组件,仅此于vue实例 Root
-
components
组件文件夹,除了APp.vue
之外的组件,都写到这个文件夹中- 组件的逻辑直接写在component的
xxx.vue
文件里
- 组件的逻辑直接写在component的
-
assets
静态资源文件夹静态资源放到
assets
文件夹下面,直接使用对应路径即可引入CSS样式文件也在
assets
文件夹中 , 其有两种引入css文件的方式
<方式一> 在单文件组件App.js
的style标签中引入
<方式二> 在main.js
中引入
import './assets/base.css';
(三 mian.js文件详解 )
// 导包的语法
// 可以等同于 const Vue = require('vue')
// 可以等同于 const App = require('./App.vue') =>App.vue为单文件组件
// import 是es6中新的模块化语法 意为导包
import Vue from 'vue'
import App from './App.vue'
// 导入样式
import './assets/base.css'
// 导入组件
import niupi from './components/niupi.vue'
// 注册组件
Vue.component('niupi', niupi)
// 是否打印终端信息 默认值是 true
Vue.config.productionTip = false
// 创建Vue实例
new Vue({
// 对应的是`public/index.html` 这里面是顶级vue实例设置的dom元素(通俗理解就是把vue实例放到html文件中) 一般不写代码在此
el: '#app',
// 把App.vue这个组件,渲染到Vue实例中
render: h => h(App)
})
// .$mount('#app')
render的作用就是把App.vue这个组件渲染到Vue实例中
在浏览器开发者插件Vue中的Root表示Vue实例 是根节点 Root包含着不同的组件,这个App.js为第一个组件
这也是main.js的作用 =>把App.js组件与Vue实例关联起来
3.5 安装(下载)路由
1.打开另一个cmd窗口,输入命令 npm i vue-router
2.出现下图说明路由安装成功
3.在main.js文件内初始化 (设置) 路由
#### 1.导入路由
import VueRouter from 'vue-router' => 等价于const VueRouter = require('vue-router‘)
#### 2.use一下 =>脚手架中必须通过Vue.use 把路由设置上去
`Vue.use(VueRouter)` =>[出处](https://router.vuejs.org/zh/installation.html)
#### 3.导入子组件,写路由规则
<1> 导入子组件
import results from './components/results.vue
<2> 写路由规则
const routes =[
{
path:'/results',
component:results
}
]
#### 4.创建路由对象
const router = new VueRouter({
routes
})
#### 5.将路由设置给Vue实例
// 设置给vue实例
new Vue({
render: h => h(App),
// 把路由设置上来(挂载)
router
}).$mount('#app')
4.路由懒加载
具体做法
4.1. 在router.js中 , 组件的导入时,使用const Foo = () => import('./Foo.vue')
即可实现懒加载
4.2. 当设置路由懒加载后 , 在请求不同路由时,加载这个路由对应的js和css,首次的加载量少了,首次速度快一些
原来的在router.vue中是通过 import语法导入组件的 如下
// 导入组件
import index from '../views/index.vue'
import login from '../views/login.vue'
为了让第一次打开页面加载速度快一些 , 用以下方式导入组件 , 实现路由懒加载
// 实现路由懒加载,代码拆分
const index = () => import('../views/index.vue')
const login = () => import('../views/login.vue')
// 嵌套路由组件
const users = () => import('../views/users.vue')
const roles = () => import('../views/roles.vue')
const rights = () => import('../views/rights.vue')
5.路由的抽取
<1>在router.js中
1.导入vue到router.js中
2.进行路由初始化 my-vueRouter
3.记得要暴露路由 export default router;
4.匹配路由规则
// 导入vue
import Vue from 'vue';
// 初始化路由
// 1.导入路由
import VueRouter from 'vue-router'
// 2.use一下
Vue.use(VueRouter)
// 3.导入组件
import login from '../views/01-login.vue';
import index from '../views/02-index.vue';
// 4.定义路由规则
const routes = [
{ path:'/login', component:login },
{ path:'/index',component:index}
]
// 5.实例化路由对象
const router = new VueRouter({
routes
})
// 6.把路由暴露出去
export default router;
<2>在main.js中
1.导入路由
import router from './router/router';
2.将路由挂载到vue实例上
new Vue({
render: h => h(App),
// 挂载路由到vue实例上
router
}).$mount('#app')
3.6 使用css预编译
定义样式时,会写很多重复性代码,而修改起来很麻烦,为了更有效率写css,人为开发新语法,以适应前端开发日益复杂化和工程化的需要. 这个新的语法有三种,除了有less,还有sass和stylus. 这些新的语法写出来的代码,浏览器是不能解析的,所以这些代码写完之后,还需要用工具转化成正常的css代码,才能使用,这样去编写css代码就叫做css预编译。
传送门
(1) 导包
你可以在创建项目的时候选择预处理器 (Sass/Less/Stylus)。如果当时没有选好,内置的 webpack 仍然会被预配置为可以完成所有的处理。你也可以手动安装相应的 webpack loader:
# Sass
npm install -D sass-loader node-sass
# Less
npm install -D less-loader less
# Stylus
npm install -D stylus-loader stylus
(2) 设置 `lang="scss/less" scoped
具体说明
-
使用less
- 下包 npm install -D less-loader less
- 在文件中定义less 有两种方式
(1)
(2) 直接导入less文件
-
使用sass
- 下包
npm install -D sass-loader node-sass
-
或者直接导入scss文件
- 语法基本使用和 less没有任何区别
- 下包
(3)导入公共样式
1.在assets文件夹中创建base样式文件
`base.scss / base.less`文件
2.<2>在main.js中全局导入样式
用@import语法导入文件
3.7 导入element ui库
npm i element-ui -S
在main.js中导入element.ui库
// 引入element ui库
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
3.8 axios设置
步骤
1.src下新建文件夹api,里面新建文件api.js或者http.js
2.下载axios npm i axios
3.接口文档找到接口基地址设置
4.根据接口文档抽取调用的接口为方法
5.用到的地方导入这个方法
6.import { login} from'api/http
// 导入 axios
import axios from 'axios';
// 创建一个副本 设置基地址
const http = axios.create({
baseURL: 'http://localhost:8888/api/private/v1/'
})
// 暴露和接口相关的方法即可
// 接口抽取 - 登录验证接口
// 用对象解构的方式定义参数
export const login = ({username,password}) =>{
return http.post('login',{
username,
password
})
}
四 代码打包
npm run build
五 git代码托管 (略)
完结
2021 5 14