什么是npm
简单来说,NPM(Node Package Manager)是包含在Node.js里面的一个包管理工具,
NPM会随着Node.js一起安装。NPM为开发者提供了一个代码模块共享的大平台,
当我们项目中需要使用某个模块(JavaScript包)时,
可以直接使用NPM包管理工具来下载对应的包并安装,
我们也可以把自己用Node.js写的代码发布到平台上供他人使用。
什么是生产环境什么是开发环境
简单来说,就是在项目的开发阶段就是开发环境;
项目上线了,开始正式提供对外服务,上线后的阶段就是生产环境。
在生产环境下,一般会关掉错误报告,打开错误日志等操作
devDependencies配置的是开发环境,安装项目开发时所依赖的模块。
比如像webpack工具,只是用来构建项目和打包,这些都是在开发阶段才使用的,
等项目上线后就用不到webpack工具了,那么我们就可以把webpack安装到开发环境中,
使用 --save-dev命令安装到devdependencies下
dependencies配置的是生产环境,安装项目运行时所依赖的模块。
比如jQuery库,等项目上线以后依然是要继续使用的,我们就要安装在生产环境中,
如果没有把需要的依赖安装到生产环境中,
项目上线运行时就有可能会报错。使用 --save 命令安装到 dependencies 下
package.json文件里面有什么
搭建一个前端项目之前,通常会在项目的根目录下生成一个名为package.json的文件作为NPM包的描述文件,
使用该文件来定义项目信息、配置包依赖关系
在package.json文件中,所有的依赖包都会在 dependencies 和 devDependencies 的配置项中进行管理,
它们的意思是:
dependencies: 表示生产环境下的依赖管理;
devDependencies: 表示开发环境下的依赖管理;
什么是脚手架
vue脚手架指的是vue-cli,它是一个专门为单页面应用快速搭建繁杂的脚手架,
它可以轻松的创建新的应用程序而且可用于自动生成vue和webpack的项目模板
vue项目里的目录与文件分别是什么
node_modules:用于存放我们项目的各种依赖,比如axios等等,没有moudles文件,项目就没法运行,
可以使用 npm install进行项目依赖的安装
public:用于存放静态文件
public/index.html:是一个模板文件,作用是生成项目的入口文件,
webpack打包的js,css也会自动注入到该页面中。
我们浏览器访问项目的时候就会默认打开生成好的index.html
src:我们存放各种vue文件的地方
src/assets:用于存放各种静态文件,如图片等
src/compnents:用于存放我们的公共组件,如 header、footer等
src/views:用于存放我们写好的各种页面,如login、main等
src/APP.VUE:主vue模块 引入其他模块,app.vue是项目的主组件,所有页面都是在app.vue下切换的
src/main.js:入口文件,主要作用是初始化vue实例,同时可以在此文件中引用某些组件库或者全局挂在一些变量
src/router.js:路由文件,这个里边可以理解为各个页面的地址路径,用于我们访问,同时可以直接在里边编写路由守卫
src/store.js:主要用于项目里边的一些状态的保存,state中保存状态,mutations中写用于修改state中的状态,
actions异步操作
package.json:模块基本信息项目开发所需要模块,版本,项目名称
package-lock.json:是在 npm install时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号
babel.config.js:是一个工具链,主要用于在当前和较旧的浏览器或环境中将ECMAScript 2015+代码转换为JavaScript的向后兼容版本
gitignore:git上传需要忽略的文件格式
postcss.config.js:postcss 是帮我们后处理css ,css已经编译完成了,在stylus-loader编译成css之后,在通过postcss优化css,通过一系列组件去优化,比如以下,通过autoprefixer 添加css前缀
vue.config.js:保存vue配置的文件,可以用于设置代理,打包配置等
组件通信方式
父传子:在父组件自定义属性名传递数据,在父组件在引入和挂载子组件,在父组件使用它,
在标签上绑定你想传入的数据,在子组件上用props接受数据,并且使用它
子传父: 子:this.$emit("自定义事件名",数据) 子组件标签上绑定自定义事件名=“回调函数”
父:methods:{回调函数(){//逻辑处理} }
兄弟通信(需要有共同的父组件):
设定事件中心vue实例 中央通信 let bus = new vue()
A:methods:{函数{bus.$emit("自定义事件名",数据)}} 发送
B:created(){bus.$on("A发送过来的自定义事件名",函数)} 进行数据接受
$refs 在input上绑定input1,然后在javascript里面这样调用:this.$refs.input1
$parent
$children
谈谈你对单页面的理解以及它的优缺点
单页面应用是指只有一个主页面的应用,浏览器一开始要加载所有必须的 html, js, css。
所有的页面内容都包含在这个所谓的主页面中,内容较多时首页加载速度比较慢
优点:数据驱动、组件化、轻量、简洁
缺点:
不支持低版本的浏览器,最低只支持到IE9;
第一次加载首页耗时相对长一些;
不可以使用浏览器的导航按钮需要自行实现前进、后退。
不利于seo
如何获取dom元素
Id getElementById
class getElementByClassName
TagName getElementsByTagName
Name getElementsByName
vue-router有哪些模式,优缺点
history
优点:使用简单,无需后台支持
缺点:在url中以hash形式存在,不会传到后台
hash
优点:地址明确,便于理解和后台处理
缺点:需要后台配合