持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
新公司使用的技术栈是vue,于是我打算快速学习一下,看了两天教学视频,太枯燥了,一看就困。于是找了bili上的vue项目实战(是【vue项目实战教程】这位博主的,非常感谢),简单的记录一下学习的过程。
一、项目介绍
1.技术栈
2.步骤
- 项目搭建+使用element实现首页布局
- 顶部导航菜单及与左侧导航联动的面包屑联动
- 封装一个Echarts插件
- 封装一个Form表单组件和Table表单组件
- 企业开发之权限管理思路讲解
二、脚手架的搭建
1.yarn相对于npm的优势
Yarn是由Google,Facebook,Exponent和Tilde联合推出的一个js包管理工具,是为了弥补npm的一些缺陷出现的
- 速度快:并行安装,npm是按照队列,依次安装,yarn是并行安装,提高性能;离线模式,如果之前安装过,再次安装会从缓存中获取,npm要从网络上下载
- 安装版本统一: 为了防止拉取到不同的版本,Yarn有一个锁定文件(lock file)记录了被确切安装上的版本号,每增加一个模块,就会创建或更新yarn.lock这个文件,这样就保证了每一次拉取同一个项目依赖,使用的都是一样的模块版本;npm同一个项目安装的时候无法保证一致性,同一个项目会由于安装的版本不一致出现bug
- 更简洁的输出:命令行里yarn只打印必要的信息
- 多注册来源处理
- 更好的语义化:yarn改变了一下npm命令的名称,更清晰
2.yarn和npm命令的对比
| npm | yarn |
|---|---|
| npm install | yarn |
| npm install react --save | yarn add react |
| npm uninstall react --save | yarn remove react |
| npm install react --save-dev | yarn add react --dev |
| npm update --save | yarn upgrade |
3.vue-cli4脚手架搭建
1.安装node.js
自带npm的环境,如图即安装成功
2.安装cnpm
- 说明:npm(node package maneger)是nodejs的包管理器,用于node插件管理
- 选装cnpm,因为npm安装插件是从国外服务器下载,网络影响大,可能出现异常
- 安装命令:npm install -g cnpm -registry=registry.npm.taobao.org
- 我这里报了个错,解决办法是用管理员省份运行Windos PowerShell,输入set-ExecutionPolicy RemoteSigned这个命令,然后根据提示输入A,再次执行cnpm-v,成功了
3.安装yarn
命令:npm install -g yarn 如图即安装成功
4.安装vue-cli脚手架构建工具
命令:cnpm install -g @vue/cli
三、创建项目
命令:vue create 项目名称(不能有大写字母)
运行项目:npm run serve
四、element-ui
全局引入
npm i element-ui -S- 在 main.js 中写入以下内容:
import ElementUI from'element-ui';
import'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI)
以上代码便完成了 Element 的引入。需要注意的是,样式文件需要单独引入。
按需引入
- 项目打包:
npm run build,会自动生成一个dist文件夹 - 在 main.js 中写入以下内容:
import {Button} from'element-ui';
Vue.use(Button)
需要什么组件引入什么组件,按需引入太麻烦,但是速度要比全局引入快,性能会提高很多,可以看一下两种引入方式生成的dist包的大小,按需引入要比全局引入小很多,不过个人建议使用全局引入
五、Vue路由的使用
- 命令行里输入:
npm i vue-router@3.2.0 - 根文件创建文件夹router,在main.js中引入
import App from './App.vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import router from './router';
Vue.config.productionTip = false
Vue.use(ElementUI)
new Vue({
router,
render: h => h(App),
}).$mount('#app')
- 在router文件夹里创建index.js
import VueRouter from "vue-router";
import hHome from "../views/hHome.vue"
Vue.use(VueRouter)
const routes = [
{
path:'/',
name:"Home",
component:hHome
}
]
const router = new VueRouter({
mode: 'history',
routes
})
export default router
- 在根文件下创建views文件夹,新建hHome.vue(驼峰命名法,不然会报错),
<div>我是home</div>
</template>
<script>
export default{
name:'hHome',
data(){
return {}
}
}
</script>