我一直强调我是个很懒的人,虽然我认为自己是个代码控但不代表我喜欢写大量代码。有做Web前端开发的人一定都接触CSS,由其在当下CSS3更是做出Cool站的必修课。我曾和不少的前端开发讨论过CSS3,我却发现在他们的眼中,CSS3却是一个非常难啃的骨头,平时写CSS3也只能是痛并快乐着。他们人都在说 “能少写一点吗?”  我其实并没有这种感觉,CSS代码量是大,但比起长年写服务端的代码也只不过是一个小部分而已。只是觉得写CSS3总是有一种思路不清晰的感觉,如果写CSS能像写类那样,速度就高了。直到我用了LESS!

"Less is More"! 我觉得LESS最酷的是他的能让我清晰地思考,能以面向对象的方式写CSS!让肥胖而臃肿的CSS代码变更更有骨感更为之高雅。VS.NET中有支持LESS的插件:Web Essentials . 可以支持动态将*.less文件生成*.css。不过支持上还是稍欠不足,由其在性能上有待提高。我试过同时编译10个比较大的less文件(每个代码行大约在600行左右),在i7 2.8G的机器上跑都需要1分多钟,而且很编译时内存损耗大约在2G左右(一个文件大约需要200M左右的内存),在VS.NET2012下Less有很多格式化错误。或者可以使用 Bundle Transformer 建立运行期动态编译,但性能还很是个问题,而且使用复杂。总之在ASP.NET MVC我也一没有找到其它能比这两个做法更好的方案。

现在情况不同了,在node架构下使用LESS是一件很幸福的事!node支持less的模块就数:less-middleware 最好用了。IDE中WebStorm也对LESS作了很好的支持。

Less middleware是一套基于运行期动态编译的模块,只有less的原文件被改动时或css文件不存在时才会启动编译。Less middleware的动态编译速度极快,完全没有在asp.net MVC上那种可怕的损耗问题出现。

在 epxress中配置less-middleware

var express = require('express');
var app = express(); ... app.use(require('less-middleware')(path.join(__dirname, 'public'))); ...

这段代码的意思是将 root/public 目录作为less-middleware的检测目录,在运行期当引用该目录下的css文件时,会触发less-middleware的动态编译。

如我的站点上有这样的目录结构

/public

/styles

/style.less

在Html中引用style.css

...
<link rel="stylesheet" href="/public/styles/style.css" />
...

当打开Browser访问该页面时,less-middleware会自动将style.less编译成为style.css, 而且不是每次都编译只是css文件不存在或者less文件发生了改变才会编译。

如果所有的less文件想保存在 /less目录下,而输出时放在/css的话,可以更改less-middleware 编译选项:

app.use(require('less-middleware')(path.join(__dirname, 'public'),
{
preprocess: {
path: function(pathname, req) {
return pathname.replace(/^/less//, '/css');
}
}
}));

快点动手在node.js中试试less吧,你会有完全不同的开发体验。

NodeJS旅程 : Less的更多相关文章

  1. NodeJS旅程 : module 不可忽略的重点

    modules 模块的简介 Module 是Node.js中最重要的一个部分也是进行深度开发前的必修课.掌握Module才能真正理解NodeJS的精髓,你会发现从思路上会有极大的扩展.  学会写mod ...

  2. NodeJS旅程 : express - nodejs MVC 中的王牌

    express 正如ASP.NET MVC 在作为.net平台下最佳的 Mvc框架的地位一样,express在 node.js 环境也有着相同的重要性.在百度上 "nodejs expres ...

  3. 死磕NodeJs之REPL与For Server,我的艰辛的旅程(一)

    ode.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接 ...

  4. 新的旅程:NodeJS - 环境篇

    用ASP.NET MVC好多年了,还记得当初为MVC所倡导的"DRY"理念所感染,为Razor的简单而震撼.随着MVC的成熟反而让我觉得似乎渐渐地走入了微软营造的一种高技术的牢笼. ...

  5. nodeJS 菜鸟入门

    从一个简单的 HTTP 服务开始旅程-- 创建一个 server.js 文件,写入: //最简单的 http 服务例子 var http = require("http"); ht ...

  6. 手把手教你做爬虫---基于NodeJs

    前言: 趁着北京今儿天气格外的蓝,我觉得我得干点什么,于是乎,卷起袖子,整理一下最近做爬虫的那些事儿. 目标:爬取北京大学软件与微电子学院的所有新闻,并将内容及图片存储到本地. 设计思路:经过对北京大 ...

  7. 当Shell遇上了NodeJS

    此文已由作者尧飘海授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 摘要 在企业级系统维护和互联网运维中,Shell脚本的编写与维护常必不可少, 但是Shell脚本的编写与调试 ...

  8. ApacheCN NodeJS 译文集 20211204 更新

    Node API 开发入门指南 零.前言 一.Node.js 简介 二.构建 API--第 1 部分 三.构建 API--第 2 部分 React TypeScript Node 全栈开发 零.序言 ...

  9. NodeJs之OS

    OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...

随机推荐

  1. 在 Azure VM 中使用应用商店映像创建 HPC Pack 群集的头节点

    使用 Azure 应用商店和 Azure 门户中的 Microsoft HPC Pack 2012 R2 虚拟机映像创建 HPC 群集的头节点. 此 HPC Pack VM 映像基于预安装了 HPC ...

  2. MySQL优化—工欲善其事,必先利其器(2)

    上一篇文章简单介绍了下EXPLAIN的用法,今天主要介绍以下几点内容: 慢查询日志 打开慢查询日志 保存慢查询日志到表中 慢查询日志分析 Percona Toolkit介绍 安装 pt-query-d ...

  3. 布局:上下两个div高度固定,中间自适应

    需求:经典布局 —— 头尾固定高度中间高度自适应布局 头部固定高度,宽度100%自适应父容器: 底部固定高度,宽度100%自适应父容器: 中间是主体部分,自动填满,浏览器可视区域剩余部分,内容超出则中 ...

  4. linux,添加新硬盘的方法

    一.物理机添加一块新的硬盘方法(目的是把后加的磁盘直接加在现有的上面,不用再分区挂载)1.首先要确定现有系统在那块盘上  [root@localhost ~]# df -lhFilesystem    ...

  5. 计数dp

    计数dp 计数类的$dp$没做过几个,所以之前都放到"思维"标签下了,后来发现原来这属于一类问题啊...搬过来了. 管道取珠:https://www.lydsy.com/Judge ...

  6. RMAN 备份数据库到DISK后进行数据恢复

    RMAN 备份数据库到DISK,然后进行数据恢复 一.rman备份 1. 全备脚本 vi bakup_level0.sql connect target / run { allocate channe ...

  7. Vue入门2

    欢迎转载,转载请注明出处. 前言 学习本系列Vue知识,需要结合本系列的一些demo.你可以查看我的 Github 或者直接下载 ZIP包 . 建议学习本系列之前已经会一个其他的前端框架,了解计算属性 ...

  8. docker swarm英文文档学习-4-swarm模式如何运行

    1)How nodes work Docker引擎1.12引入了集群模式,使你能够创建一个由一个或多个Docker引擎组成的集群,称为集群.集群由一个或多个节点组成:在群模式下运行Docker引擎1. ...

  9. shiro实战系列(十四)之配置

    Shiro 被设计成能够在任何环境下工作,从最简单的命令行应用程序到最大的的企业群集应用.由于环境的多样性,使得许多配置机制适用于它的配置. 一. 许多配置选项 Shiro的SecurityManag ...

  10. android camera 摄像头预览画面变形

    问题:最近在处理一下camera的问题,发现在竖屏时预览图像会变形,而横屏时正常.但有的手机则是横竖屏都会变形. 结果:解决了预览变形的问题,同时支持前后摄像头,预览无变形,拍照生成的jpg照片方向正 ...