组建拆分
先在static目录下引入reset.css
接着在index.html引入,并且设置移动端<meta>
,viewport的
有时候由于eslint的检测功能,写js少一个冒号多一个空格都会频繁报错,这会让刚接触Vue或者对ES6不熟悉的人痛苦不堪,可以在上一节讲到的eslint相关配置处,把对应检测功能置零
如果不置零,下面这段代码就会报错:
所以要到eslintrc.js去设置
现在的App.vue如下:
然后我们编写组件来替换那三个区块。
创建header组件
将header引入到App.vue里面(注册):
Components后面要有空格。
这里还要安装一个stylus-loader依赖,不然会报错。
这里提供一个依赖包的安装方法:到package.json,在里面添加所需要的最新版本的包,然后再cnpm install ,这样就可以添加到node_modules里面了,运行cnpm run dev。
基本的组件结构如下:
Vue-router
因为在单页应用中,内容区块有三部分,所以这时候要用到路由vue-router
http://router.vuejs.org/zh-cn/installation.html
同样通过package.json来安装。

vue-router的用法:http://router.vuejs.org/zh-cn/essentials/getting-started.html
可以参考下面两个链接:
官网的写法:http://router.vuejs.org/zh-cn/essentials/getting-started.html
参考:https://segmentfault.com/q/1010000007929093/a-1020000007929260
(PS: 链接都是个人觉得在遇到困难时很好的解决思路,所以放上来供大家参考)
如果使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter)。在通过use()这个方法,相当于安装插件。
参照官网给的vue-router的过程:
|
|
所以,main.js是这样的:
1像素border实现
border-bottom: 1px solid rgba(7, 17, 27, 0.1)
直接在.tab加这句话可以实现,但是在移动端看到的就不是这样的,因为手机端有个dpr的概念,电脑设置的1px不代表所有手机里面显示的都是1px:
http://mobile.51cto.com/web-484304.htm
总的来说就是: 想要在dpr=2的设备下显示1px,对于css而言,可认为border: 0.5px,因为这是retina下(dpr=2)下能显示的最小单位。
然而,无奈并不是所有手机浏览器都能识别border: 0.5px;,ios7以下,android等其他系统里,0.5px会被当成为0px处理,那么如何实现这0.5px呢?
由于项目中多处用到border1px,所以单独拿出来放到一个通用文件里: mixin.styl
这只是通用文件,真正实现1px,关键是检测出设备dpr,从而进行缩放
没错就是媒体查询@media
把检测dpr这个功能单独隔离出一个base.styl
所以为了使用border1px,则需要在使用的那个组件,同时@import (base.styl)和(mixin.styl),为了简洁,我们把这些需要单独引入的css文件,再放入一个总的styl文件: index.styl
至此,每一个需要用到border1px的地方,只需要:
总结一像素的实现:伪类+缩放(用一个class)
这样基本框架已经搭建好了,接下来就来开发组件。