@Vue项目结构解析javascript
create by db on 2019-1-10 16:28:10
Recently revised in 2019-1-15 11:46:47css
Hello 小伙伴们,若是以为本文还不错,麻烦点个赞或者给个 star,大家的赞和 star 是我前进的动力!GitHub 地址html
查阅网上诸多资料,并结合本身的学习经验,写下这篇Vue学习笔记,以记录本身的学习心得。现分享给你们,以供参考。前端
做为一只前端菜鸟,这是我掘金分享的第五篇文章。若有不足,还请多多指教,谢谢你们。vue
在上一篇项目搭建文章中,咱们已经下载安装了node环境以及vue-cli,而且已经成功构建了一个vue-cli项目——见Vue小白课(一)——CLI搭建项目(Vue2.x)。那么接下来,咱们来梳理一下vue-cli项目的结构。java
参考文献:node
├── build --------------------------------- 项目构建(webpack)相关配置文件,配置参数什么的,通常不用动
│ ├── build.js --------------------------webpack打包配置文件
│ ├── check-versions.js ------------------------------ 检查npm,nodejs版本
│ ├── dev-client.js ---------------------------------- 设置环境
│ ├── dev-server.js ---------------------------------- 建立express服务器,配置中间件,启动可热重载的服务器,用于开发项目
│ ├── utils.js --------------------------------------- 配置资源路径,配置css加载器
│ ├── vue-loader.conf.js ----------------------------- 配置css加载器等
│ ├── webpack.base.conf.js --------------------------- webpack基本配置
│ ├── webpack.dev.conf.js ---------------------------- 用于开发的webpack设置
│ ├── webpack.prod.conf.js --------------------------- 用于打包的webpack设置
├── config ---------------------------------- 配置目录,包括端口号等。咱们初学可使用默认的。
│ ├── dev.env.js -------------------------- 开发环境变量
│ ├── index.js ---------------------------- 项目配置文件
│ ├── prod.env.js ------------------------- 生产环境变量
│ ├── test.env.js ------------------------- 测试环境变量
├── node_modules ---------------------------- npm 加载的项目依赖模块
├── src ------------------------------------- 咱们要开发的目录,基本上要作的事情都在这个目录里。
│ ├── assets ------------------------------ 静态文件,放置一些图片,如logo等
│ ├── components -------------------------- 组件目录,存放组件文件,能够不用。
│ ├── main.js ----------------------------- 主js
│ ├── App.vue ----------------------------- 项目入口组件,咱们也能够直接将组件写这里,而不使用 components 目录。
│ ├── router ------------------------------ 路由
├── static ---------------------------- 静态资源目录,如图片、字体等。
├── .babelrc--------------------------------- babel配置文件
├── .editorconfig---------------------------- 编辑器配置
├── .gitignore------------------------------- 配置git可忽略的文件
├── index.html ------------------------------ 首页入口文件,你能够添加一些 meta 信息或统计代码啥的。
├── package.json ---------------------------- node配置文件,记载着一些命令和依赖还有简要的项目描述信息
├── .README.md------------------------------- 项目的说明文档,markdown 格式。想怎么写怎么写,不会写就参照github上star多的项目,看人家怎么写的
复制代码
在webpack的配置文件里,设置了main.js是入口文件,咱们的项目默认访问index.html,这个文件里面<div id="app"></div>
和App.vue组件里面的容器完美的重合了,也就是把组件挂载到了index页面,而后咱们只须要去建设其余组件就行了,在App组件中咱们也能够引入,注册,应用其余组件,能够经过路由将其余组件渲染在App组件,这样咱们就只须要去关注每一个组件的功能完善。webpack
就是说vue的默认页面是index.html,index中的<div id="app"></div>
挂载了App.vue这个大组件,而后全部的其余子组件(hello.vue等)都归属在App.vue这个主组件下。git
在vue-cli的项目中,其中src文件夹是必需要掌握的,由于基本上要作的事情都在这个目录里。es6
index.html如其余html同样,但通常只定义一个空的根节点,在main.js里面定义的实例将挂载在根节点下,内容都经过vue组件来填充
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>vuedemo</title>
</head>
<body>
<!-- 定义的vue实例将挂载在#app节点下 -->
<div id="app"></div>
</body>
</html>
复制代码
一个vue页面一般由三部分组成:模板(template)、js(script)、样式(style)
<!-- 模板 -->
<template>
<div id="app">
<img src="./assets/logo.png">
<router-view></router-view>
</div>
</template>
<!-- script -->
<script> export default { name: 'app' } </script>
<!-- 样式 -->
<style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } </style>
复制代码
【template】
其中模板只能包含一个父节点,也就是说顶层的div只能有一个(例如上面代码,父节点为#app的div,其没有兄弟节点)
<router-view></router-view>
是子路由视图,后面的路由页面都显示在此处
打一个比喻吧,<router-view>
相似于一个插槽,跳转某个路由时,该路由下的页面就插在这个插槽中渲染显示
【script】
vue一般用es6来写,用export default
导出,其下面能够包含数据data,生命周期(mounted等),方法(methods)等,具体语法请看vue.js文档。
【style】
样式经过style标签包裹,默认是影响全局的,如需定义做用域只在该组件下起做用,需在标签上加scoped.
<style scoped></style>
如要引入外部css文件,首先需给项目安装css-loader依赖包,打开cmd,进入项目目录,输入npm install css-loader
,回车。
安装完成后,就能够在style标签下import所需的css文件,例如:
<style>
import './assets/css/public.css'
</style>
复制代码
main.js主要是引入vue框架,根组件及路由设置,而且定义vue实例,下面的 components:{App}
就是引入的根组件App.vue
后期还能够引入插件,固然首先得安装插件。
/*引入vue框架*/
import Vue from 'vue'
/*引入根组件*/
import App from './App'
/*引入路由设置*/
import router from './router'
/*关闭生产模式下给出的提示*/
Vue.config.productionTip = false
/*定义实例*/
new Vue({
el: '#app',
router,
template: '<App/>',
components: { App }
})
复制代码
vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。
router文件夹下,有一个index.js,即为路由配置文件。
/*引入vue框架*/
import Vue from 'vue'
/*引入路由依赖*/
import Router from 'vue-router'
/*引入页面组件,命名为Hello*/
import Hello from '@/components/Hello'
/*使用路由依赖*/
Vue.use(Router)
/*定义路由*/
export default new Router({
routes: [
{
path: '/',
name: 'Hello',
component: Hello
}
]
})
复制代码
这里定义了路径为'/'的路由,该路由对应的页面是Hello组件,因此当咱们在浏览器url访问http://localhost:8080/#/时就渲染的Hello组件
相似的,咱们能够设置多个路由,‘/index’,'/list'之类的,固然首先得引入该组件,再为该组件设置路由。
主要包括webpack的配置,项目配置,项目依赖等等。
详情可参考如下文章:
这是我本身作的一个vue模板文件,符合Eslint规则
<!-- -->
<template>
<div/>
</template>
<script> // 这里能够导入其余文件(好比:组件,工具js,第三方插件js,json文件,图片文件等等) // 例如:import 《组件名称》 from '《组件路径》' export default { // import引入的组件须要注入到对象中才能使用 components: {}, data() { // 这里存放数据 return { } }, // 监听属性 相似于data概念 computed: {}, // 监控data中的数据变化 watch: {}, // 生命周期 - 建立完成(能够访问当前this实例) created() { }, // 生命周期 - 挂载完成(能够访问DOM元素) mounted() { }, beforeCreate() {}, // 生命周期 - 建立以前 beforeMount() {}, // 生命周期 - 挂载以前 beforeUpdate() {}, // 生命周期 - 更新以前 updated() {}, // 生命周期 - 更新以后 beforeDestroy() {}, // 生命周期 - 销毁以前 destroyed() {}, // 生命周期 - 销毁完成 activated() {}, // 若是页面有keep-alive缓存功能,这个函数会触发 // 方法集合 methods: { } } </script>
<style lang='less' scoped> //@import url(); 引入公共css类 </style>
复制代码
vue-cli给建立vue项目提供了很大的便利。可是同时大量的第三方库的使用,会让打包后的js变的很大,因此仍是要熟悉配置,熟悉第三方插件的使用,才能够开发更高效的开发web应用。这里把vue-cli的一些相关内容给本身作一个总结,便于之后查阅。也是但愿对其余开发者有帮助。有不足之处请指正。
路漫漫其修远兮,与诸君共勉。
祝你们2019更上一层楼!
后记:Hello 小伙伴们,若是以为本文还不错,记得点个赞或者给个 star,大家的赞和 star 是我编写更多更丰富文章的动力!GitHub 地址
db 的文档库 由 db 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。
基于github.com/danygitgit上的做品创做。
本许可协议受权以外的使用权限能够从 creativecommons.org/licenses/by… 处得到。