nodejs-kissy 项目简介
发布于 4年前 作者 bachi 3891 次浏览 最后一次编辑是 3年前

注:本文最初发表在ued.taobao.com上,是从前端开发的角度来实践nodeJS,希望能给大家带来一些启迪。

由于NodeJS和web前端一样采用javascript作为开发语言,而且同样具有无阻塞(non-blocking)和事件驱动(event-driven)等特点,Node.js 采用 V8 引擎,同样,Node.js 实现了类似 Apachenginx 的web服务,让你可以通过它来搭建基于 JavaScript 的 Web App,这样就可以让“后端”具有某些前端的功能——渲染页面。

你可以通过我们前些天 team 内的一个分享来了解下 NodeJS: NodeJS简介

nodejs-kissy 项目

KISSY 是淘宝网开发的一款轻巧灵活的JS框架,如今已经是1.1.7版本,并在淘宝网广泛应用,在浏览器端给我们带来更加清新的体验,今天让我们更进一步,我们 发起了nodejs-kissy 项目,你的 KISSY 程序可以无缝移植到服务器端了 ^_^



从这里开始 nodejs-kissy

得益于 KISSY 轻巧的设计,核心模块可以很充分的解偶,所以对 KISSY 作简单hack就能够运行在 NodeJS 上。但开始之前应该首先准备好预装了 npm 的服务器(linux/FreeBSD/MacOS/cygwin),npm 是 NodeJS 软件包管理器,类似yum 和 apt-get,通过他来安装 NodeJS 的软件包会非常方便。

准备 npm:

curl http://npmjs.org/install.sh | sh

如果你的账户没有权限则先准备好目录权限:
sudo chown -R $USER /usr/local

安装成功后就可以通过 “npm install package_name” 命令来安装 NodeJS 软件包了

安装 Nodejs-KISSY 的依赖:服务器端没有浏览器环境,要运行js需要模拟真实的浏览器环境,因此 KISSY 需要依赖一些包:
npm install jsdom

npm install htmlparser
npm install express
npm install connect

安装Nodejs-kissy:
npm install kissy

运行 “hello world”:

新建文件 helloworld.js
var S = require(‘kissy’).KISSY;

S.ready(function(S){
S.log(‘hello world!’);
});

运行:
node helloworld.js

更方便的移植?

你可能会好奇,服务器端没有浏览器,为什么KISSY能如此轻松的运行在服务器端?这主要是因为KISSY的模块加载机制是脱离浏览器环境的,也就 是说KISSY.use、KISSY.add、KISSY.app是和环境无关的,它只关系到你组织代码的方式和风格,另外,得益于足够原生态的 KISSY-DOM实现,KISSY只调用到domjs(domjs的高层api是面向YUI3设计的)的基础方法,所以DOM相关操作依然可以无缝嫁接 到服务器端,相对于YUI3核心模块的深层次耦合,KISSY的移植实在是太轻松了。

策略上的取舍

KISSY 基于“one for all”理念的core和粗粒度的widget,使得KISSY可以使用更少的"引入文件"来执行程序,而非必要一定采用combo(即使采用combo 性能未必提高多少),这样使得require的逻辑策略更简便。

所见即所得

和YUI3一样,KISSY-Loader 也可以非常方便的引入外部脚本,不管脚本是存放在服务器上,还是通过http请求到,开发者只要require fullpath即可,非常低碳,比如我可以这样运行:
var S = require(‘kissy’).KISSY;

S.add({
‘menu’:{
fullpath:’http://cdn/menu.js
}
}).use('menu’,function(S){
new S.Menu(‘#ID’);
});

总之,你在浏览器端怎么用 KISSY,你就在服务器端怎么写,接下来,nodejs-kissy 项目的主要工作是更多的测试和提高其健壮性。nodejs-kissy 和 KISSY 一样基于 MIT 协议,你可以通过 fork github 上的项目来参与 nodejs-kissy 的开发。

回到顶部