标签归档:JS

常见的腻子脚本功能摘要

经常见到一些网站中用一些腻子脚本「polyfill」,对其主要的功能进行一下摘要记录。

html5shiv.js  让IE8及更低版本的IE浏览器识别section、article、nav等HTML5元素;
selectivizr 让IE6/7/8 支持:first-child 等CSS选择符;
CSS3Pie 让低版本的IE支持圆角、渐变、边框图片、阴影等可视化CSS3功能;
Respond.js 让旧浏览器支持媒体查询;
-prefix-free 为需要厂商前缀的CSS3声明增加前缀;
borderBoxModel.js 让IE6/7支持CSS3的box-sizing属性;

这些腻子脚本主要用于弥补IE及低版本浏览器的不足,在GitHub有一个腻子脚本列表,参见「这里」。

Node.js学习笔记(一)

Javascript是一种脚本语言,应用于浏览器,在浏览器上下文中解释和执行,如果脱离了浏览器,则需要一个能对其进行解释和执行的对应环境,Node.js就提供这样一种环境,能够在服务器端编写Javascript应用,在服务器端运行时对Javascript代码进行解释然后正确执行,Node.js使用Google V8引擎来解释和执行Javascript代码。

《Node 入门》学习

Node.js同时提供内置的接口模块组成一个开发框架,可以在上面快速建立可扩展的Web应用。Node.js是基于事件驱动的,采用非阻塞I/O模型,单线程或单进程运行,能够较好的支持跨不同设备的数据密集型实时应用。

要使用Node.js首先需要进行安装,Node.js支持Windows OS、Mac OS、Linux OS,目前Node.js最新版本为0.10.2,同时Node.js也是开源的。

关于Node.js如何安装,请参阅《官方安装指南》。

安装完毕后,照例来一个Hello World!来看看是否正常运行。用文本编辑器创建一个helloworld.js文件并输入代码

console.log("Hello World!");

命令行窗口到该js文件所在目录,录入node helloworld.js,如果能正常看到命令行输出Hello World!就表示安装OK。

helloworld cmd

Node.js提供了不少的网络模块,HTTP、DNS、NET、UDP、HTTPS等,可以很方便的进行服务器的开发,使用浏览器来访问Node.js应用可以使用其提供的模块,依旧以Hello World!为例,使用HTTP模块建立一个http服务器,使用web浏览器访问返回Hello World!,修改helloworld.js文件。

var http = require("http");

http.createServer(function(request,response) {
    response.writeHead(200,{"Content-type": "text/plain"});
    response.write("Hello World!");
    response.end();
}).listen(9999);

这样就建立了一个简单的http服务器,在本地监听9999端口,对于http请求,该服务器返回一个http状态为200,http头类型为Content-Type,其值为text/plain,并向http主体发送Hello World!文字的响应。

在命令行再次录入node helloworld.js ,回车

http server

进入监听http请求状态,打开web浏览器,在浏览器地址栏中输入http://localhost:9999/,回车,显示如下

helloworldbrowser

很容易就构建了一个http服务器,在createServer函数参数中使用匿名函数来最为回调函数监听http请求,有任何http请求后,Node.js就调用该回调函数处理请求,并给出响应。

使用Node.js的模块使用require,类似于Java的Import、C#的Using等,创建一个项目时,会根据设计划分为不同的模块,在一个模块中调用另外一个模块公开的函数,这样的函数需要导出,导出模块中的函数使用exports。具体为 exports.外模块调用函数名 = 导出的函数名。做个练习,server.js构建上述http服务器,index.js为项目入口模块。

server.js代码

var http = require("http");
function start() {
    http.createServer(function(request, response) {
        response.writeHead(200,{"Content-Type": "text/plain"});
        response.write("Hello World!\n");
        response.write("Exports function start");
        response.end();
    }).listen(9999);
}

exports.go = start;

index.js代码

var server = require("./server");
server.go();

http服务器一般情况下根据请求的不同给予不同的反馈,所以需要对于不同的请求做不同的处理,http请求包括URL及GET/POST参数,这些数据都包含在匿名函数request对象中。

—————–我是分割线———————–

继续下去应该先对Javascript进行必要的学习,同时需要粗略的看看node.js的API文档。