js学习总结----初步了解node

JS是一门“运行在客户端(运行在浏览器)”的“轻量级”的脚本编程语言

JS目前不仅仅只能在浏览器中运行,还可以在NODE中运行

node的优点:基于谷歌V8引擎的,具有强大的io操作,基于事件驱动的异步 编程。

1、什么是node

node是一个环境,供JS代码执行的环境,我们可以把他等价于浏览器,只不过我们一般都会把node这个环境安装到服务器端,这样的话我们就可以在服务器端使用JS编写程序了,也就是JS不仅仅是客户端的语言,也是服务器端的语言...

2、node && 浏览器

NODE采用的是谷歌的V8引擎来渲染JS的(运行的速度快、稳定、我们编写的JS代码不需要考虑兼容)

浏览器中的全局JS对象是window,而node环境下的全局JS对象是global

浏览器是安装在客户端的,为了保护客户端的安全,基本上不可能提供用JS对客户电脑磁盘上的文件进行操作的功能;但是node环境中提供了对应的I/O操作(服务器上文件的操作),我们使用JS可以对服务器磁盘下的文件进行增删改查。

NODE是基于事件驱动的 / 异步编程(我们在NODE环境下编写的JS程序一般都是异步编程的)

NODE提供给JS很多新的方法:http.createServer、fs.writeFileSync、fs.readFileSync...

3、如何让JS代码在NODE中执行?

利用webStrom嵌入了NODE的环境,直接把编写的JS通过右键“run xxx.js”在NODE环境中执行(不建议大家经常这样使用,因为有些时候我最新执行的操作其实会运行前几次的缓存,因为有些时候会有缓存)

在命令窗口中执行

  在当前要执行的JS文件目录下,shift+右键 =>在此处打开命令窗口 => node xxx.js 相当于把JS代码在NODE环境中执行了。

  在NODE中执行JS代码和浏览器中执行一样,如果JS代码发生了修改,想要看到最新的效果需要重新执行对应的JS文件。

  在命令窗口中执行node,然后开始编写对应的JS代码测试即可(RPEL命令操作),和在浏览器的控制台编写代码测试一样。

4、NODE模块

  内置模块(NODE环境天生提供的):http(createServer...)、fs(writeFileSync、readFileSync)、url...

  自定义模块:我们自己定义的模块

    在NODE环境中,我们在当前的项目下创建了一个JS文件,就相当于创建了一个模块,例如:新建一个a.js,就相当于创建了a模块

    如果需要提供一些方法给其他的模块使用,则需要通过module.exports把方法导出,例如:在A模块中写了module.exports = {fn:fn} / module.exports.fn = fn

    如果现在B模块中使用,我们需要先导入var a = require("./a");这样就可以调取A模块导出的方法 a.fn()

  第三方模块:别人写好的模块我们拿来使用   在NODE中如果需要使用别人的模块,需要使用npm这个命令进行管理 https://www.npmjs.com/

  安装: npm install 第三方模块名称 -g (安装在NODE的全局环境中)

  卸载:npm uninstall 第三方模块名称 -g

  安装成功后在JS中通过 var less = require("less");把刚才安装的第三方模块导入到JS中,这样的话我们就可以使用这个模块中提供的方法了 less.render...

5、服务创建成功后,如何的向服务器发送请求

  在浏览器中输入 http://localhost:端口号/

  在浏览器中输入 http://本机的IP地址:端口号/

  

下面是常用的http、fs、url的方法的代码:

//导入三个常用的NODE内置模块
var http = require("http"),
    fs = require("fs"),
    url = require('url');//URL模块提供了一个方法,url.parse(str),用来解析url地址。第一个参数为传递的url,第二个参数默认是false,变为true后,返回结果的query中存储的是经过处理解析后的结果:把传递进来的多组数据以键值对的方式进行存储


//1、HTTP 
/*
    http.createServer  创建一个服务,变量server就是我们创建出来的那个服务
    server.listen:为这个服务监听一个端口80
*/ 

var server = http.createServer(function(request,response){
    //当客户端向服务器端的当前服务(端口号是80这个服务)发送一个请求,并且当前服务已经成功接收到这个请求后
    //request(请求):存放的是所有客户端的请求信息,包含客户端通过问号传参的方式传递给服务器的数据内容
    // console.log(request.url);//客户端请求的地址,我们服务端通过request.url获取到的是不包括localhost或者ip地址的信息例如:index.html?name=zhangsan&age=7
    var urlObj = url.parse(request.url,true),
        pathname = urlObj.pathname,
        query = urlObj.query;

    //根据请求的URL地址(具体的是根据地址中的pathname)获取到对应资源文件中的源代码
    if(pathname === "/1.html"){
        //fs.readFileSync([path+name],[encode])同步读取指定文件夹中的内容:文件中的内容读取不完不执行下面的操作
        var con = fs.readFileSync('./1.html',"utf-8");
    }
    

    //response(响应):提供了向客户端返回内容和数据的方法
    //response.write:向客户端返回内容
    //response.end:告诉服务器响应结束了(一定要加)
    response.write(con);
    response.end();


});
server.listen(80,function(){
    //当服务创建成功,并且端口号监听成功之后执行这个回调函数
    console.log("server is create success,listening on 80 port")
});
posted @ 2017-07-31 15:08  diasa  阅读(242)  评论(0编辑  收藏  举报