目录
5.1 区分webpack中导入Vue和普通网页使用script导入Vue
5.2 在vue中结合render函数渲染指定的组件到容器中
5.4 export default 和export的使用方式
第七章 组件中使用style标签lang属性和scoped属性
第一章 webpack中url-loader的使用
1.1 用url-loader读取图片
我们想给红色的div加个背景图片,所以在index.scss中书写背景图片样式
1.首先安装插件
2.在webpack.config.js中书写匹配规则
3.可以在user后面的url地址中填入参数
我们发现图片的名字改变了,主要是为了避免重名,可能重名的情况如下图,都会在根目录下建立一个生小孩的图片,最终后者会覆盖前者.
为了解决这种情况,我们可以在图片名字的前面加一个8位的哈希值.即可解决问题.
1.2 用url-loader处理字体文件
1. 安装bootstrap
2. 修改根目录
一开始的根路径设置为,找不到此目录,这是因为src与node_modules是平级的
删除dev下的contentBase src,交由根目录进行托管
再次加载,成功
这是以前的导入方式,现在我们用新的方式来导入
因为bootstrap下有听多种后缀名,我们需要在webpack.config.js下进行新的配置
第二章 webpack和npm中几个问题的说明
注意下json里面不能写注释,webpack.config.js中可以写注释是因为它是一个js文件,要以文件最后的结尾来看文件的类型.
如果我们遇到如下类似的问题
可能是依赖没装上,不能看package.json中有,如下图,就说已经装上了,这只是记录你以前装过,不代表现在有
我们可以执行cnpm install来重新进行安装
有时我们会装一些包,但是因为太慢所以我们用ctrl+c停止了其运行,又重新安装成功,等我们运行npm run dev时,又各种报错说缺少什么包,原因是我们刚才有些包装到一半被强行终止了,遇到这种情况我们就把node_modules删了,再重新安装一遍就好了.
第三章 webpack中babel的配置
为什么需要babel:
3.1 关于babel的基本配置
例如我们再main.js中写了如下代码,想要处理就需要更高级的语法.
3.1.1 安装对应的包
3.1.2 书写对应的配置规则
在webpack.config.js中配置匹配规则
3.1.3 新建.babelrc文件来 并进行配置
运行成功
3.2 关于Babel的几点说明
刚才导入了两套包
第一套包相当于babel的转换工具,只负责转换,它不知道它们的对应关系
第二套包相当于语法.
如果只安装一个将不能正常工作,因为我们要把class语法转换成ES3的语法,即function构造函数来模拟,你不知道class person与static info对应ES3的哪种语法,第一套包只负责转换,但是它不知道高级语法到低级语法的对应关系,如果真的想进行转换,我们还需要真正的语法插件,这个语法插件就像一本字典,比如info对应的中文意思是信息,中文可以想象成低级的es3语法,英文可以想象成高级的es6语法,babel-preset这个就提供了对应关系,但是只有转换器也是没办法工作的,所以我们还需要对应的转换器.当转换器转换到某一行时,交给babel-preset去翻译,然后交给bundle去打包去合并(这个是老师的原话,我也没搞清楚具体啥意思...,猜测是第一套包对整体进行把握,第二套包是对细节进行翻译)
第四章 使用Vue实例的render方法渲染组件
模板:
传统方式Vue实例:
新的方式Vue实例:
可以简化var html=那一行为
传统方式:
替换掉<login>标签
新的方式:
这里return的结果不是之前那种只替换个标签了,而是直接替换掉那个容器.
当你即使在容器中有内容,也会被替换掉,如下图div容器中是有个p标签的,也不会进行显示,显示的依然是模板中的内容.
传统方式效果:
新的方式效果:
第五章 webpack结合Vue进行使用
5.1 区分webpack中导入Vue和普通网页使用script导入Vue
5.1.1 在以前的网页中如何使用Vue
5.1.2 用webpack导入Vue
main.js中写入
index.html中写入:
尝试运行发现报错:
这是因为我们导入的Vue其实不是真正的vue,是删减版的,我们可以修复这种情况,为了修复,我们先 回顾包的查找规则:
为了验证上述结论我们打开
发现了main,发现main导入的是runtime的js,而真正的Vue.js是要比下面的要大的
修改方法:
第一种:
第二种:
在webpack.config.js下进行规则匹配
5.2 在vue中结合render函数渲染指定的组件到容器中
main.js中的书写:
index.html的书写
一起运行良好,但是如果我们将main.js中的import修改成如下图,还是会报错,报错在runtime-only环境下不能编译,那么我们该如何修改才能在runtime-only环境下编译呢?
我们需要单独的在src下定义vue文件,这是一个纯粹的组件
然后下载和配置loader
在配置文件(webpack.config.js)中新增配置项
在main.js中导入login.vue并更改main.js中的vue实例,vue实例中的login就是刚才导入的login
可以进行简写:
可以将function改成箭头函数
只有一个参数小括号也能省略,并将参数名字改成c
返回值只有一行代码,return也可以不要了
index.html的书写
最后运行html即可成功了.
5.3 总结梳理webpack中如何使用vue
5.4 export default 和export的使用方式
在组件中定义数据和方法.login.vue的书写
那么这个export default是什么呢?
举例:
项目结构:
我们在test.js中定义了模块
也可以这样定义模块
我们在main.js中读取模块的内容
用export default暴露的成员可以用任意变量来接收,比如用如下来接收也可以,且export default向外暴露的成员只能暴露一次.
也可以用export来暴露,但是必须要用一样的名字接收,或者是在接收时用as改变
第六章 webpack与路由结合使用
6.1 webpack使用vue-router
目录结构:
模板App的创建:
路由的安装
main.js的书写
流程:当地址修改时会被路由监听到,路由监听到后就会从上到下匹配route规则,假如匹配到account则会将account组件渲染到对应的<router-view>中去(在app中触发超链接必然会放到app的<router-view>中去)
老师解释:
6.2 webpack实现children子路由
可以装一下插件,能进行一些提示
包结构:
模板的书写:
更改路由:
导入组件:
6.3 webpack抽离路由模块
新建router.js
导入组件到router.js中
导入路由对象router.js中
最后暴露路由对象
在main.js中导入
第七章 组件中使用style标签lang属性和scoped属性
scoped 指定样式只在本组件与子组件中有效
在account.vue中加入如下样式
它的组件和子组件字体都发生了改变
lang指定可以使用的样式