资讯专栏INFORMATION COLUMN

首次踏入vue坑——阅读zhihudaily-vue源码

JasonZhang / 2790人阅读

摘要:之前用的技术栈都是上找的的脚手架,第一次看项目的源码。感觉一个文件里包含模板对应和样式的组合方式,使得组件化更加明显,也降低了平时项目中的小文件数量。相比于的,使用在原生标签里插入属性和一些模板表达式来展示数据,显得简洁了许多。

之前用的技术栈都是yeoman上找的webpack+react的脚手架,第一次看vue项目的源码。
感觉一个vue文件里包含html模板、对应JS和样式的组合方式,使得组件化更加明显,也降低了平时项目中的小文件数量。
相比于react的JSX,使用在原生标签里插入属性和一些模板表达式来展示数据,显得简洁了许多。
总体感觉,更小巧,更简洁。
还有跟react有显著不同的是,vue中使用原生js很方便,对dom的操作也很方便,所以在很多react很棘手的问题上,vue明显方便了很多。

此项目的移动设备匹配方案使用的是淘宝的flexible方案,根据设备动态在html加入dpr和font-size属性,并且在webpack里自定义vue作为loader,使用如下的配置

postcss: [require("postcss-px2rem")({
  baseDpr: 1,             // base device pixel ratio (default: 2)
  threeVersion: false,    // whether to generate @1x, @2x and @3x version (default: false)
  remVersion: true,       // whether to generate rem version (default: true)
  remUnit: 37.5,            // rem unit value (default: 75)
  remPrecision: 3         // rem precision (default: 6)
})],

其中dpr和rem是flexible相应的概念,可以参考淘宝出的flexible手册进行了解。
进行了上述配置以后,就可以在css里随意写px,然后会自动转换成rem值并进行多设备的匹配工作了。

项目还依赖了fastclick库,其github说明为
FastClick is a simple, easy-to-use library for eliminating the 300ms delay between a physical tap and the firing of a click event on mobile browsers. The aim is to make your application feel less laggy and more responsive while avoiding any interference with your current logic.
总体来说就是让应用在移动端的体验更加优化,让点击从300ms左右的click动作变为50~100ms的touchend动作,还解决了点透问题。链接:http://www.cnblogs.com/yexiao...

项目中的各种小图标是使用阿里巴巴的fonticon解决方案(http://www.iconfont.cn/)来实现的,只要在scss里定义一个font family

font-family: "iconfont";
src: url("//at.alicdn.com/t/font_1467357626_5109937.eot"); /* IE9*/
src: url("//at.alicdn.com/t/font_1467357626_5109937.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */
url("//at.alicdn.com/t/font_1467357626_5109937.woff") format("woff"), /* chrome、firefox */
url("//at.alicdn.com/t/font_1467357626_5109937.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
url("//at.alicdn.com/t/font_1467357626_5109937.svg#iconfont") format("svg"); /* iOS 4.1- */

载入阿里CDS下的各个字体,就可以使用类似的方式来调用一个个小图标了。

项目首页展示的swiper里的图像都通过一个简单的正则表达式,被重定向到了https://images.weserv.nl/?url=这一网址,该网址的说明为
Images.weserv.nl is an image cache & resize proxy. Our servers resize your image, cache it worldwide, and display it.
不是特别懂这一步的意义在哪。缓存图像?统一大小?

整个通篇看下来是个各组件各自为战的小型webapp,很多功能都缺打磨,组件之间很少看到数据传递,都是自己调用ajax来获取自己所需要的数据并展示出来,通过vue-router构建单页应用,也没有统一的状态管理和单向数据流(类似redux),不过小而美本来就是vue的诉求吧。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91251.html

相关文章

  • --- 基于钉钉的Weex微应用开发起手式(其实写完发现变成Weex相关资料汇总了)

    摘要:问题,你可以在中文讨论板块提交问题,地址。文字展现必须使用标签关于端的点透事件需要在上层视图上加上,如果上层视图有事件,多加一个中间层,把加在空事件视图上关于事件注意仅支持和,暂不支持。事件会在页面就要关闭时被触发。 好吧,我知道你来看这个文章,一定是遇到坑了,所以,把这几个放在最开始吧 现在,如果你的团队的技术栈是react,请尝试这个吧,跟react很像,如果你的团队一直使用rea...

    zhouzhou 评论0 收藏0
  • Riot.js——一个小而美的JS框架

    摘要:专有的内容更少,而更多符合标准的成分。当前标签实例的方法被调用时当前标签的任何一个祖先的被调用时更新从父亲到儿子单向传播。相对来说,微型场景会更适合,不想要太多的外部依赖,又需要组件化数据驱动等更现代化框架的能力。 Riot.js是什么? Riot 拥有创建现代客户端应用的所有必需的成分: 响应式 视图层用来创建用户界面 用来在各独立模块之间进行通信的事件库 用来管理URL和浏览器回...

    nemo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<