导航:首页 > 编程语言 > nodejs路由详解

nodejs路由详解

发布时间:2023-12-15 03:42:42

1. 如何用nodejs搭建web服务器

创建一个记事本将下面的代码复制进去 保存为app.js
var http = require('http');//引入响应头

http.createServer(function (request, response) {
//参数一是与请求相关的对象
//参数二是与响应有关的对象
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});

// 发送响应数据 "Hello World"
response.end('Hello World\n');
}).listen(8888);//监听端口

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
以下以我的电脑上的路径为准 我是将app.js 保存在E:\NODE这个文件夹下面
接下来就是运行了打开cmd
第一步:E:
第二步:cd NODE //CD是 命令行改变目录的命令
第三步:node app.js

这个是运行效果接下来访问localhost:8888就可以看到hollo word
建议多看一些node的模块 比如 express和session mysql之类的模块

2. nodejs搭建web服务器就是这么简单!

Node.js 是一个基于 Chrome V8 引擎的 javaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。(nodejs官网上的介绍),正如官网上介绍的那样,nodejs确实很牛!怎么个牛法?看看下面的代码就知道了。

//引入http模块

var http = require("http");

//设置主机名

var hostName = 飗.0.0.1'

//设置端口

var port = 8080;

//创建服务

var server = http.createServer(function(req,res){

res.setHeader('Content-Type','text/plain');

res.end("hello nodejs");

});

server.listen(port,hostName,function(){

console.log(`服务器运行在http://${hostName}:${port}`);

});

短短几行代码就把一个简单的web服务器搭建完成了,为了验证效果,我们在浏览器请求,结果如下

运行成功!

到此为止,一个web服务器就建立成功了! 没错就是这么简单,然后我们就可以写个html界面愉快的玩耍了,哈哈哈!果断的写了一个html页面来请求一下我们的web服务器。

代码简单,点击p获取数据并将服务器返回的数据展示。好了,我们运行一下demo.html文件,我擦来!居然出现了……

很明显,通过jquery请求不到数据,这是因为跨域请求的原因。我们的web服务器并不支持跨域请求,所以报错了。解决方式:在服务器的响应头文件里加上如下代码:

再次重启服务器,运行demo.html,显示结果很是令人欣喜!

通常请求服务器都会拼接参数的,最常用的就是get请求,post请求。很明显,我们现在的代码还不能支持。express框架很好的封装了nodejs的http模块,使我们用起来非常的简单。

引入express :$ cnpm install express –save

使用方式变化不大,通过express()方法开启服务,然后在通过get方法来设置匹配参数的路由,通过在回调函数的req中可以获取请求参数和地址。post请求也是类似,不过有不同的是,post请求在获取参数的时候要引入body-parser 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。

运行结果:

完整的get以及post请求就是以上了。下一篇文章会结果fs文件模块介绍http是如何返回文件的,敬请期待!!

学习从来不是一个人的事情,要有个相互监督的伙伴,想要学习或交流前端问题的小伙伴可以私信“学习”小明加群获取2019web前端最新入门资料,一起学习,一起成长!

3. nodejs express 路由设置网页跳转

1、首先创建app.js,输入:

varexpress=require("express")

varport=process.env.PORT||3000

varapp=express()

app.set('views','./views')

app.set('viewengine','jade')

app.listen(port);

4. NodeJS项目基础结构简单介绍

按照常规,去执行npm start

或者在Terminal中手动输入命令,结果如下:

可以看到是执行了test/package.json文件中的 start 命令,初始packagejson.json文件内容如下:

执行 start ,对应的命令为 node ./bin/www 并在命令行执行。现在项目已经启动成功了,可以打开浏览器输入 localhost:3000 查看一下,但是本次侧重点在于项目启动时候发生的完整的过程。所以……

那么我们需要看一下 ./bin/www 文件

通过 require() 来引入本地安装的包,这里加载了三个包 app、debug 、http ,主要关注一下app.js

可以看到app加载的为该项目基础组件,核心为 var app = express(); 看一下express.js

将app用到的中间件等暴露出来,所以 app = express() 实际上就是加载应用基础组件,生成项目的根节点(当然这个节点是复合的)。所以在app.js中,进行的是加载应用基础组件并进行应用设置初始化(包含了视图目录设置、页面模板引擎设置、中间件的设置、静态资源目录设置以及错误捕捉相关内容)。

继续回到 www.js ,同样将debug配置、http相关组件进行加载。继而是默认端口号的设定。通过http.createServer(app),创建应用服务相关信息,并对端口进行监听。

浏览器输入 localhost:3000

控制台显示:

说明在以 GET 方式请求URI为 "/" 的资源,并以 GET 方式请求 /stylesheets/style.css 资源,这个发生在app.js中我们设定的资源请求。

我们来看下 ./routes/index 文件

即定义网站主页的路由

使用 express.Router 类创建模块化、可挂载的路由句柄(简称:路由模块)。Router 实例是一个完整的中间件和路由系统。最终,在应用中加载路由模块app.use('/', indexRouter);

通过 res.render 对视图进行渲染,上述为对index.ejs的渲染。 ps:在app.js中已经设定了views的所在目录 。语法: res.render(view [,locals] [,callback])

示例:

区别:路由句柄

为请求处理提供多个回调函数,其行为类似 中间件 。唯一的区别是这些回调函数有可能调用 next('route') 方法跳至下一个同路由的回调函数而略过其他路由回调函数。路由句柄有多种形式,可以是一个函数、一个函数数组,或者是两者混合。

使用一个回调函数处理路由:

使用多个回调函数处理路由(记得指定 next 对象):

使用回调函数数组处理路由:

混合使用函数和函数数组处理路由:

区别:路由方法

一个路由示例:

路由方法源于 HTTP 请求方法,和 express 实例相关联。

获取express的一个实例 app ,通过路由方法(和HTTP请求对应),GET方式请求 "/"。详细的路由方法参考链接: 路由方法

5. nodejs-koa2(mvc模式)前后端分离 前端设计

前后端分离,前端nodejs运行环境,使用koa2集成负责资源分配与用户交互,实现token验证用户身份,路由控制。等!

自行 网络 解决;

"program": "${workspaceFolder}app.js"

此处就是是将app.js作为启动文件。${workspaceFolder}代表根目录,vsc启动时会在根目录下找到并加载app.js文件。

参数介绍: name 项目名称、 version 版本号、 description 项目描述、 main 项目启动文件、 scripts 启动快捷设置, author 作者, dependencies 第3方中间件名称及版本。

最重要的
dependencies ”这里添加一些要用到的包,以上是这次要用到的所有的包,版本自己更改。
scripts ”这里是一些nodejs的便捷命令,上线的时候会用到,直接在终端中,package.json同级目录 ,执行‘npm start’ 即 可启动app.js。
别的没啥太大作用瞎写即可。

启动相关配置,封装到config/init.js中,启动文件直接引用即可

3-6-1、init.js项目核心。

异常友好处理方法封装

路由配置

视图渲染

核心集成

3-6-2、config.js项目参数配置。为什么不用json文件 因为json不能加注释

3-6-3、token.js项目token相关方法封装。

执行后项目结构会增加两个文件

新增

src/hello.js。

views/index.html

浏览器访问: http://127.0.0.1:3000/koa/login

输入值获取token

获取的token如图:

先不用带token进行访问: http://127.0.0.1:3000/koa/ hello/jiaobaba,被token拦截,返回401

带上token访问: http://127.0.0.1:3000/koa/ hello/jiaobaba

测试页面渲染,及跳转html页面,直接访问 http://127.0.0.1:3000/koa /views

结束!!!!!!

需要源码联系我

6. nodejs 中express框架中request有哪些属性和方法

最近本人在学习开发NodeJs,使用到express框架,对于网上的学习资料甚少,因此本人会经常在开发中做一些总结。

express获取参数有三种方法:官网介绍如下

Checks route params (req.params), ex: /user/:id
Checks query string params (req.query), ex: ?id=12
Checks urlencoded body params (req.body), ex: id=
1、例如:127.0.0.1:3000/index,这种情况下,我们为了得到index,我们可以通过使用req.params得到,通过这种方法我们就可以很好的处理Node中的路由处理问题,同时利用这点可以非常方便的实现MVC模式;

2、例如:127.0.0.1:3000/index?id=12,这种情况下,这种方式是获取客户端get方式传递过来的值,通过使用req.query.id就可以获得,类似于PHP的get方法;

3、例如:127.0.0.1:300/index,然后post了一个id=2的值,这种方式是获取客户端post过来的数据,可以通过req.body.id获取,类似于PHP的post方法;

下面举例介绍下这三个方法:

如下一个test.html代码

<form action="/index" method="get">
<input type="text" name="login_name"/>
<input type="submit" value="Sign In" />
</form>
在nodeJs中我们要自定义HTTP,因此创建index.js
var app = require('express').createServer();

app.get('/:key', function(req, res){
console.log(req.params.key);//输出index
console.log(req.query.login_name);//输出表单get提交的login_name
res.send('great you are right for get method!');//显示页面文字信息
});
app.post('/:key', function(req, res){
<pre name="code" class="javascript"> console.log(req.params.key);//输出index
console.log(req.body.login_name);//输出表单post提交的login_name
res.send('great you are right for post method!');//显示页面文字信息
});app.listen(3000);

之后运行node index.js就可以看到本效果,当然前提是你要先访问test.html,至于如何通过express访问一个html文件我就不详细描述了,可以参考如下代码:
global.fs=require('fs');
var realpath = VIEW + "test.html";
var file = fs.readFileSync(realpath);
res.end(file);

阅读全文

与nodejs路由详解相关的资料

热点内容
电脑没联网怎么拷贝文件 浏览:224
wps工具栏怎么换成中文 浏览:338
win7和xp共享文件 浏览:883
苹果4代音量键没反应 浏览:827
怎样打开tif文件 浏览:153
java下载文件zip 浏览:440
qq浏览器压缩文件怎么设密码 浏览:526
黄埔数控编程哪里好 浏览:406
mac109升级1010 浏览:691
在java的菜单如何导入文件 浏览:982
现在什么网站销量最高 浏览:760
angularjsclass定义 浏览:157
ug数控编程怎么导出程序 浏览:466
cmdb文件 浏览:710
鹎文件夹 浏览:763
网络舆情应对的基本理念是什么 浏览:433
word2007层次结构 浏览:456
去掉文件名的数字 浏览:713
word公司 浏览:710
淘宝店数据包怎么上传 浏览:341

友情链接