一、目录结构
- /dist:执行
npm run build
命令后此文件夹下会自动生成文件,这些文件是真正需要发布到服务器上的文件 - /node_modules:使用
npm install module_name --save
命令后,第三方包所存放的目录,引入时只需要import xx from "module_name"
- /public:不需要webpack处理的文件所存在的目录,如tinymce(富文本编辑器)
- /src:源代码目录
4.1 /src/api:接口文件目录
此目录下文件命名规范:"Api" + "业务名" + ".js"
此目录下文件方法命名规范:['add', 'list', 'detail', 'edit', 'del']
为每个接口文件都具备的方法
接口调用示例
import ApiArticle from "@(注1)/api/ApiArticle.js";
ApiArticle.add( 数据放在这里 )
.then(res => {
请求成功走这里
})
.catch(e => {
请求失败走这里
});
接口基地址(如"http://******:8080/zhaosheng")统一配置在/src/util/request.js
关联方法(涉及两个以上的表的方法)放在主要的接口文件中,如查询一篇文章是否已经被收藏,涉及到文章表和收藏表,但是该方法放在ApiArticle.js中
ajax库使用axios,不是$.ajax(),支持promise写法(.then()
.catch()
)
POST请求中,content-type已经统一处理为application/x-www-form-urlencoded
,multipart/form-data
因为项目使用base64图片上传,因此不会使用
注意: 具有分页功能的接口,前端处理后返回的数据格式为 {count:xx ,list:[{xx1},{xx2}]}
使用示例如下
this.tableData = res.list;
this.count = res.count;
Vue.js具有双向数据绑定的特点,更改数据的时候,视图会同步变化,不需要手动拼接html模板之后插入到dom节点中
- /src/util:公共函数文件目录,Helper.js集成base64图片上传函数,request.js为axios配置文件
- /src/components:Vue公共组件目录,集成富文本编辑器(tinymce)
- /src/view:注意: 视图文件目录
7.1 /src/view/Layout:布局文件目录,包含侧边栏,头部
7.2 /src/view/业务名:业务视图文件夹
注意: 业务视图文件夹下包含两个文件Index.vue
:列表页,关键element组件:TableAddAndEdit.vue
:新增,修改页面,关键element组件:Form Upload Pagination - /src/router.js:Vue路由文件,新增加页面时需要配置路由,路由会自动渲染成侧边栏,无需手动修改
/src/view/Layout/Aside.vue
文件 - /src/store.js:Vuex文件,全局数据仓库
- /src/main.js:webpack入口文件
二、element管理后台开发工作流程
- 新增加页面时需要进行的工作
1.1. 增加/src/api目录下的接口文件,命名为"Api" + "业务名" + ".js"
1.2. 在/src/view/路径下,新建业务名
目录,命名规则为大驼峰规则(单词首字母大写,包括第一个单词)
1.3. 在/src/view/业务名目录下,新建Index.vue
,AddAndEdit.vue
两个文件,此两个文件的命名无需更改,固定即可
1.4. 修改路由文件 /src/router.js,新增加一条路由规则
注意: 文件请按以上顺序建立,否则有可能报文件找不到的错误(找不到所引入的文件)
以上四项流程中,都需要进行的工作:修改"业务名",如原来是ApiArticle.js,替换成ApiQa.js,以此类推
三、开发工具与运行环境
- chrome浏览器,chrome开发者工具,chrome浏览器安装vuedevtools
- ide:vscode,vscode安装汉化包,vetur
注意: ide不可混用,一个文件中途不要换ide - node.js
- vuecli
四、命令行
注意: 命令行请在项目根目录下运行
- 安装vuecli:npm install --save @vue/cli
- 安装项目依赖:npm install
- 运行项目:npm run serve
- 编译项目:npm run build
- 进入目录 cd 目录名
- 返回上级目录 cd…
- 查看本机ip cmd => ipconfig
- 在当前目录打开命令行 shift + 右键
注意: npm run serve 具有热更新效果,更改代码后无需刷新,即可看到效果(更改路由或者添加文件有可能需要刷新)
http://localhost:8080/
的地址是本机地址,只有本机可以访问http://172.21.xxx.xxx:8080/
的地址是校园网(局域网)地址,链接了校园网的设备都可以访问,不限制本机
五、注释规范
- 什么时候加注释
1.1 一长串代码只为了完成一个功能时
如 //调整返回数据的格式
1.2 复杂的if嵌套
在if的分支点上加注释
如 //没有登陆时
//登陆时
1.3 标明文档作者,时间
如 //author xxx
如 //date 2019-xx-xx 00:00:00 - 注释格式
2.1 作者,日期用多行,todo类(说明自己接下来将要去做的事情是什么)能用单行的用单行
六、关于Vue的常识
- 什么是Vue
Vue是一个渐进式JavaScript框架,核心思想是mvvm,即双向数据绑定。双向数据绑定的意思是视图的变化会自动同步到数据,数据的变化也会自动同步到视图。
举个例子,页面上有一个input输入框,这个input框上面有一个id属性,值为’test’,现如今用户在input输入框中输入’123456’,如何获取用户的输入值?
jQuery的做法:$("#test").val()
,这样一来就获取到了输入框的值
Vue的做法:<input v-model="form.test">
,这样写的话,数据就会同步到"form.test",想要访问到这个数据,就可以使用以下语句
this.form.test
那么如何改变input框中的值呢?
jQuery的做法:$("#test").val('123456')
,这样一来就改变了输入框中的值
Vue的做法:this.form.test = '123456'
,这样写的话,数据就会同步到<input v-model="form.test">
,就改变了输入框中的值
这就是Vue的双向数据绑定特性
- v-if v-for
如果我们向后台发送了请求,然后接收到了返回的数据,那么如何将数据同步到视图中去呢?
jQuery的做法:$("#container").html('<span>' + data + '</span>')
,需要自己手动组装html和数据
Vue的做法:
<span>{{data}}</span>
this.data = 123456
Vue改变数据的时候就会将数据自动填充到{{data}}
中去(data是变量名),如果需要根据条件判断是否显示,需要渲染列表,则需要用到v-if v-for
- 生命周期函数
Vue中mounted可以理解为$(document).ready(function(){})
- 绑定事件
@click 理解为 onclick - 引入文件
请使用import - 什么是elementui,他和Vue是什么关系
elementui是一套基于Vue的组件库,不仅仅包含基础样式,如按钮样式,也包含着功能组件,如文件上传组件,对话框组件
他们两者之间的关系类似于bootstrap的依赖JavaScript的部分,与jQuery之间的关系
仔细回忆以下,bootstrap需要先引进jQuery,在引进bootstrap自己的JavaScript文件,才能使用对话框,轮播等等依赖JavaScript的部分功能
Vue这边也是这样,需要先有Vue,然后安装elementui - 什么是"组件"
组件是封装了"html css js"三大件的代码块
体现为自定义的html标签,如< editor/>(html5没有这个标签,但是我们可以自己定义)
七、更多教程与手册
八、ide(vscode)便捷操作指南
- 搜索与替换功能 ctrl + f 或 ctrl + f
- 多行光标,按住鼠标中键然后拖动
- 查找下一个ctrl + d
- 打开命令行 ctrl + `
- ctrl + enter 行中换行
- ctrl + 方向键 或 ctrl + shift + 方向键 快速移动光标
- 快速打开文件 ctrl + p
- 文件夹内关键词搜索
- vscode的工作区是文件夹的集合
注:
- @为指向src目录的一个快捷写法,在import的时候可以使用
- "/"指的是项目根目录