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") });