问题:如何创建一个脚手架项目:
前提:需要保证正确安装@vue/cli全局包并得到vue命令一次
yarn global add @vue/cli
npm i @vue/cli -g
创建命令
vue create 脚手架文件名
问题:用yarn或者npm如何运行项目带的自定义命令?
npm run 自定义命令
yarn run 自定义命令
问题:什么是ESLint?
项目代码版本管理工具:git
旧项目(进公司第一件事)?如何得到别人的项目代码?
克隆命令是做什么的呢?
如果远程仓库有更新,如何拿到更新以后的内容到本地?
如果本地无变更
git pull
如果本地有变更
git add.
git commit -m ‘写点你本次提交了什么,注释,为了方便以后回滚到这里查看注释’
git pull
注释: 提交一次就会在本地git仓库里出现一次提交保存的记录(本时间节点的代码记录一次快照)
git pull 以后会把远程更新和本地的更新合并到一个项目内,所以冲突很有可能发生在这个命令后
本机,每次写完一个功能,本地提交一次,暂时不上传?
git add.
git commit -m ‘注释’
如果今日代码写完了,你本地git记录有很多次,一次性,想要保存到远程仓库上?
本地仓库第一次新建的,无远程仓库配置
git remote add origin 远程仓库git地址
git push -u origin master // 把本地master主分支所有提交记录,推送到远程仓库的master主分支上,-u配置一条通道以后直接本地在master分支时,可以直接git push即可
之前本地仓库已经配置好了,远程仓库的地址
git push
什么叫包?
什么叫模块?
问题:npm 或 yarn 如何下包?
npm i 包名
yarn add 包名
问题:如何在下包的时候,指定版本?
yarn add 包名@版本号
npm i 包名@版本号
问题:下的包都在哪里呢?
问题:下的包如何在工程里使用?
问题:yarn 和 npm 下的包,用import引入,但是浏览器不能直接识别import语法,我们下的包是如何作用在html网页里的?
问题:如果拿到别人的项目,发现没有node_modules,怎么办?
它其实为了给Vue扩展一些功能,给Vue添加插件
我们把函数或者对象带install方法的交给Vue.use方法内部,它会调用你的函数/install方法回传过来vue类
那你可以在函数内部给Vue添加一些全局功能,全局属性,全局方法,全局组件,全局自定义指令
Vue.use((Vue) => {
Vue.prototype.$a = 10
Vue.prototype.$message = () => {}
Vue.component()
Vue.directive()
})
Vue.use({
install(Vue){
Vue.prototype.$a = 10
Vue.prototype.$message = () => {}
Vue.component()
Vue.directive()
}
})
特殊:如果图片是外链,字符串直接使用后,浏览器发现http://直接请求外部服务器地址,就不会有问题;如果图片是相对路径,必须在当前服务器环境下,保证运行时相对路径正确
用store.commit(‘要触发的mutations函数名’)出来mutations里函数执行
用store.dispatch(‘要触发的actions函数名’)触发actions里函数执行
el-form在第一次创建并挂载的时候,会使用model对应数据对象值,复制到内部作为初始值(这个值以后不会受到影响),接着调用resetFields()方法,它会用model绑定的初始值来重置。
问题:先给了要编辑的值,再让el-form出现,它用到了要编辑的值作为默认值,置空不掉
解决:让回显的值稍微慢点执行
const fr = new FileReader()
fr.readAsDataURL(files[0]) // 传入文件对象开始读
fr.onload = (e) => { // onload等待把文件读成base64字符串后会触发onload事件函数
//e.target.result的值就是读完的结果
this.avatar = e.target.result // 赋予给变量,让他显示在img的src中
}
URL.createObjectURL(file[0])
const fd = new FormData() // 准备一个表单数据对象的容器 FormData类是HTML5新出的专门为了装文件内容和其他的参数的容器
fd.append('title', this.pubForm.title)
fd.append('cate_id', this.pubForm.cate_id)
fd.append('content', this.pubForm.content)
fd.append('cover_img', this.pubForm.cover_img)
fd.append('state', this.pubForm.state)
const getListFn = (obj) => {
console.log(obj.name)
console.log(obj.age)
console.log(obj.sex)
}
const perObj = {
name:'老李',
age:18,
sex:'男'
}
getListFn(perObj)
const getListFn = ({name:name, age:age, sex:sex, 同名key:变量名}) => {
// 本来用一个变量接受一个大对象
// obj = {name:'xiaochen', age:18, sex:'female'}
// 正常写解构赋值(快速提取对象里属性的值),解构赋值语法:
// {key名:变量名} = {key名:值}
// 运行时效果:变量名里装的,会是右侧赋予给左边的值
// {name:name1,age:age1,sex:sex1} = {name:'xiaochen', age:18, sex:'female'}
// 变量名可以随便起,可以简化一下
// key和value变量名同名可以简写
{ name, age, sex } = {name:'xiaochen', age:18, sex:'female'}
}
const perObj = {
name:'xiaochen',
age:18,
sex:'female'
}
getListFn(perObj)
无论是主动退出,还是被动(强制)退出
怎么在点击确定的时候区分,是新增/编辑
1. 定义变量标记一下,如isEdit(true是编辑,false是新增),默认为false
2. 在点击编辑的时候,isEdit改为true
3. 在点击新增的时候,isEdit改为false
4. 在点击确定的时候,就用isEdit变量做区分即可
最后对象的属性名,直接和一会儿要调用的接口需要的参数名一致
我们可以直接把对象传递给后台