PS:适合与本人一样有C++/C#编程经验的人学习Node.js
and 本人使用vs2017运行node,毕竟有着那么好的IDE不用太浪费;
学习第一天:了解一下与C#的差异以及 helloworld
插播一个链接 node入门
我们看一下怎么调用其他文件:
var server = require("./server");
我的理解,使用require这个函数,返回函数参数文件的一个对象,参数是路径
使用一个包
import http = require('http');
对了,还是使用require,但是变量类型为import,实测调用包的时候使用var不行
路由
我理解其实就是一个web服务器,有N多个网页,类似文件夹中有文件夹一样,使用形式也是一样用"/"或"//"分级,输入的网址访问哪一个网页就像你在我的电脑里输入一个路径,它会跳转到一个文件夹内,道理是一样的。
node识别路由的做法
不知道方法有多少,反正初学的话,知道一种即可
方法:
1.我们需要一个包“url”,这个包用来解析服务器接受到路径;
2.我们需要知道node里面的字典,类似于C#字典,区别是node字典的健值可以是函数,其实也很好理解,毕竟C#中我可没听说把方法作为对象的做法;
3.解析服务器接受的路径,执行相应的函数即可
code
server.ts
import http = require('http');
import URL = require("url");//调用包
var Myurl = require("./TestUrl_01");//调用“TestUrl_01”的ts文件
var Handle = {};//声明一个字典
Handle["/01"] = Myurl.Web01;//给字典调价键和健值,这里健值是一个方法
Handle["/02"] = Myurl.Web02;
function Start() {
//一个标准的helloworld服务器
var port = process.env.port || 1337
http.createServer(function (req, res) {
var path = URL.parse(req.url).pathname;//解析路径
router(path, res);//自定义的一个方法
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(port);
}
function router(path, responsed) {
//判断以该路径为主键的健值是否存在,更准确的说是判断该主键的健值是不是一个“function”
if (typeof Handle[path] === "function")
{
Handle[path](responsed);
}
}
exports.start = Start;//导出一个方法
index.ts
var sever = require("./server");
sever.start();
TestUrl_01.ts
function TestWeb01(resposed)
{
console.log("Server Request URL:TestWeb01");
resposed.end("Server Request URL:TestWeb01");
}
function TestWeb02(resposed)
{
console.log("Server Request URL:TestWeb02");
resposed.end("Server Request URL:TestWeb02");
}
exports.Web01 = TestWeb01;
exports.Web02 = TestWeb02;
注意事项:我使用的是vs2017学习node,测试上面代码的使用,我在npm上下载了一个包:url@0.11.0
结果:
以index.ts为启动文件,启动项目;
输入路径: http://localhost:1337/02
本章到此结束,主要是对node服务器做最简单的了解;