html代码翻译_Vue进阶课堂之《从HTML到Pug》

9466a239885a329b88ce9ef8e54f0dc4.png

是啥

Pug听起来或许比较陌生,但是如果说起她的前生,相信各位多少会有耳闻:Jade。

每当你不停的敲打`<>>`的时候,可曾想过,这该死的箭头是不是可以拿掉?这不单单是看着不舒服,有时候还会因为行数过多,而导致你头晕眼花。

或许你知道,有个东西叫emmet,它是解决了你写的时候多写的那些内容,但是并没有解决冗余的代码行数,更不要提在你没有完全熟练使用emmet前,脑子里面需要进行大量的预翻译!

那么是否有一种既能减少代码量,又能不做预翻译的方案呢,呐呐呐,Jade这个后端模板出现了,然后改名叫Pug了,现在Vue也支持这个语法,具体请往下看。

如何使用

  1. npm i -D pug pug-loader
  2. `` 即可

本人喜欢使用Pug、CoffeeScript、Sass,前两者有共有的哲学,CoffeeScript说自己就是JavaScript,同样的,Pug也就是HTML,你可以理解成语法糖。

功力如何

  1. 我们先来看一段HTML代码
bc8fcdcf036b70ddddb04b9d32cccb8d.png

95个字符,5行,3个结束标签

整成Pug

label input(type="checkbox") span 记住密码 .show-box

54个字符,4行,没有结束标签

差别有了,惊不惊喜?再来!

19b49d37c3ae73599629daa07a4dfa6c.png

15行,671个字符,9个结束标签

.container .ver.seller input.storeId(type='number' v-model='storeId' placeholder='输入店号' @focus='passwordShow=false') .nav button.go(@click='clickGo(0)') 我是卖家 button.little(@click='clickRegist') 注册卖家 button.go(@click='clickGo(1)') 我是买家 .ver.password(v-if='passwordShow') input.storeId(type='password' v-model='password' placeholder='输入你的6位密码') button.go(@click='login') 点击登录 span.buyer-show(v-if='passwordShow' @click='passwordShow=false') 重置

11行,481个字符,没有结束标签(这里我个人书写习惯是回车切割,为了统一对比采用这种写法)

简单推算

大约代码量节省30%,行数节省20%。如果公司绩效算行数或代码量的千万别用- -

tips

  1. Vue 使用有没有什么需要注意的地方
  2. > 没有,完全没有,该“:”就冒号,该“@”就shift+2
  3. 一些小坑
  4. 注意使用“|”符号来切割文字,如:
span i span.red love | you // 这里没必要再用一个span,使用“|”即可

Pug其他功能

Pug是后端模板起家,所以功能肯定不单单是简化语法这么简单,她也有变量、混合、过滤等等等等功能(实用性远超Ejs等),但是实际上这些功能在使用中跟Vue功能重复,我们搭建项目主要还是Vue,所以能用Vue的就用Vue的,Pug对于我们项目来说,最大的功能就是精简和整理代码。

如需了解其他功能,请前往官网查阅:Pug官网「链接」


PS:以上内容为一年前内容,现在个人已经不建议使用CoffeeS与Sass了,尤其Sass在不同终端系统的包差异化导致系列问题。只有Coffee,恐怕只是不想再担任人肉翻译机了。壮哉我大Ruby啊。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下展示部分源码,需要完整版的请下载文件 <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style> *{margin:0;padding:0;list-style:none} body{background:#ccc;} .wrap{margin:100px auto;width:900px;height:300px;box-shadow:0 0 4px #434343;background:#fff;padding:20px;border-radius:10px;} .wrap .language{position:relative;width:100px;height:30px;padding:0 30px;margin:20px;text-align:center;line-height:30px;border:1px solid #434343;cursor:pointer;} .wrap .language .languages{position:absolute;top:30px;left:-1px;width:354px;height:auto;border:1px solid #434343;display:none;background:#fff;color:#fff;line-height:40px} .wrap .language .languages ul li{float:left;width:78px;height:40px;margin:4px; border:1px dashed #ccc;background:#368;} .wrap .input, .wrap .show{width:430px;height:150px;float:left;background:#fff; color:#000;margin:10px;box-shadow:0 0 4px #222;line-height:40px;font-size:20px;text-indent:10px;color:#333;font-family:'微软雅黑';} .wrap .input textarea{z-index:3;height:100%;width:400px;border:0;resize:none;outline:0;color:#333;font-family:'微软雅黑';margin:0;padding:0;line-height:40px;font-size:20px;text-indent:10px;} .wrap span.btn{width:140px;height:30px;float:right;margin:10px;line-height:30px;text-align:center;background:#368;box-shadow:0 0 4px #ccc;border-radius:5px;color:#fff;cursor:pointer;} </style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值