讲解任何一个东西,咱们必定要知道:它是什么?怎么用?两个很关键的问题javascript
首先 node 并非一门语言,而是 javascript 的一个新的运行环境(准确地说是 js 的一个运行时)html
传统上,js 的运行环境依赖于浏览器,是借助于浏览器渲染的,所以这也限制了 js 的表演领域只能是浏览器(web)端前端
可是,当出现了 nodejs (node和nodejs一回事)后,js 又有了一个全新的运行时(仍是习惯这么叫),js 搭上了 node 这列快车后,使得 js 的用武之地拓展到了 服务端、游戏端、tcp、web端、桌面端等(不依托于浏览器等地方),所以这二者的强势结合,在业界(尤为前端)掀起了一阵风暴java
咱们经常使用的仍是 它在桌面端和 web 端这种全新的开发模式node
说到 node在 web 端的开发,就不得不说起一个伟大的 node 在 web 端的库(相似于框架,准确地说我也不知道库和框架的真正意义上区别是什么),那就是 Express 库web
而 node 在桌面端的开发中,也有两个大名鼎鼎的 库:nw 和 electron(谷歌力推的)express
由此看来,node 的前景无限美好啊,同志们仍需努力啊,废话就很少说了,开始撸吧json
接下来,我说一下利用 node 和 Express 库 来搭建一个站点的原理吧,流程模式相似于:浏览器发起一个请求,而后服务端接受(或者是叫拦截 intercept)这个请求,而后响应函数,将处理结果返回给浏览器,交给浏览器去渲染该相应结果浏览器
|__node_modules |__routers |__main.js |__views |__index.html |__about.html |__package.json |__app.js
上面这些是一个 Express 库项目所必需的 服务器
接下来,开始真正的表演了
我在前面说过,node 的项目最关键的是处理 js,所以在 node 中,最重要以及控制整个项目的运行都是依赖于 js 的,可是这些 js 文件是依赖于 node 去加载处理的,因此即便你看到一大堆 html 页面,也是不能直接在浏览器中正确运行的
而控制整个项目的最高一级 js 是一个叫 app.js 的文件(你彻底能够从新命名,并重写它,可是约定俗成叫这个名);请注意这个文件的目录级别,是位于项目根目录的,切记(由于是最高级别的)
//一、要想构建一个浏览器端访问,服务端响应的系统(暂且称之为系统吧),在node中,有不少种方式,这里咱们采用Express库来建立服务端 var express = require('express'); //二、这个库对外提供了一个 express() 的入口方法,用来建立服务端实例 var app = express(); //三、设置服务端的响应 url 映射地址 app.get('/index', function (req, res) { res.send("哇塞,你真的进来了哦"); }); //四、让这个服务端的实例监听一个浏览器的端口,同时附带一些友好提示信息 app.listen('3333', function () { console.log("Server is running on http://127.0.0.1:3333"); });
到此,一个最简单的 demo 就完成了,而后你进入到该文件所在的目录下,执行命令 node app.js(注意,这里我仍是按照大部分人的习惯,起名叫 app.js 了)
这个时候,你就能够在浏览器输入控制台打印出的这个地址访问了,是否是 so easy!(注意,我这里设置的拦截请求是 /index,所以按照个人来的话,你得这样访问:http://127.0.0.1:3333/index),好了,先总结到这里吧
//一、复制上面代码,而后修改响应数据 var express = require('express'); var app = express(); //二、既然是 响应各类页面,那么咱们就须要一个视图渲染引擎了,在 Express node 中,就是 ejs var ejs = require('ejs'); //三、将创造出的这个服务端实例的视图引擎修设置为 ejs app.set('view engine', 'ejs'); //四、在设置 ejs 引擎处理的是哪一类文件 app.engine('html', ejs.renderFile); //五、下面这些代码保持不动就好了,无非就是多加了几个页面 【注意,get表示我这里只处理的是 get 请求哦】 app.get('/index', function (req, res) { res.render('./index.html'); //这里是绑定该响应将要渲染的那个页面 }); app.get('about', function (req, res) { res.render('./about.html'); //同上,可是我多说一句,这里通常常常会出现渲染页面路径写的不对的问题,这个须要你本身慢慢观察了【ps:渲染时,系统会自动去 views 文件夹下面找视图,所以,若是你的页面是views的直接子目录,那就直接写目标页面便可】 }); app.listen('3333', function () { console.log("Server is running on http://127.0.0.1:3333"); });
嚄,终于完成了,虽然累,可是理解的仍是深入的嘛,入门的不二选择哦,欢迎交流哦
原创手敲不易,转载请注明出处,谢谢。我是拉丁小毛,欢迎你们关注我哦,一块儿交流,共同进步。有问题能够
邮我哦(util.you.com@gmail.com)