如何更换网站空间,什么网站访问量,南宁手机端建站模板,小说网站开发流程前言 前面我们创建了一个HTTP服务器#xff0c;如果只是简单的http://localhost:3000/about这种链接我们是可以处理的#xff0c;但是实际运用中一般链接都会带参数#xff0c;这样的话如果我们只是简单的判断链接来分配数据#xff0c;就会报404找不到链接。为了解决这个问…前言 前面我们创建了一个HTTP服务器如果只是简单的http://localhost:3000/about这种链接我们是可以处理的但是实际运用中一般链接都会带参数这样的话如果我们只是简单的判断链接来分配数据就会报404找不到链接。为了解决这个问题我们这篇文章就介绍url模块来处理url地址。 url模块有新旧两版用法我们这篇文章就只介绍新的用法。 在 Node.js 中url模块提供了用于处理和解析 URL统一资源定位符的实用工具。它允许开发者轻松地将一个 URL 字符串分解为其各个组成部分如协议、主机、端口、路径、查询参数和片段等并且可以用于构建新的 URL。这个模块是 Node.js 核心模块的一部分所以不需要额外安装直接通过require(url)就可以使用。 URL解析
url.parse()方法这是url模块中最常用的方法之一。它接受一个 URL 字符串作为输入并返回一个包含 URL 各个部分的对象。例如
const url require(url);
const myURL https://example.com:8080/path/to/file?namevalue#fragment;
const parsedURL url.parse(myURL);
console.log(parsedURL);输出结果会是一个类似这样的对象
{protocol: https:,slashes: true,host: example.com:8080,port: 8080,hostname: example.com,hash: #fragment,search: ?namevalue,query: namevalue,pathname: /path/to/file,path: /path/to/file?namevalue,href: https://example.com:8080/path/to/file?namevalue#fragment}从这个对象中可以清楚地看到 URL 的各个组成部分被分解出来了。
rl.parse()的第二个参数这个方法还有一个可选的第二个参数它是一个布尔值。如果设置为true那么query属性的值将是一个经过querystring.parse()方法处理后的对象而不是一个字符串。例如
const url require(url);
const myURL https://example.com:8080/path/to/file?namevalueage20;
const parsedURL url.parse(myURL, true);
console.log(parsedURL.query);输出结果
{name: value,age: 20}URL 格式化构建新的 URL
url.format()方法这个方法与url.parse()相反它接受一个包含 URL 各个部分的对象并返回一个格式化后的 URL 字符串。例如
const url require(url);
const urlObject {protocol: https:,hostname: example.com,port: 8080,pathname: /path/to/file,search: ?namevalue,hash: #fragment
};
const newURL url.format(urlObject);
console.log(newURL);输出结果为
https://example.com:8080/path/to/file?namevalue#fragment实例
//使用http模块创建服务器我们建议使用commonjs模块规范因为很多第三方的组件都使用了这种规范。当然es6写法也支持。
//http模块式Node.js内置的模块用于创建和管理HTTP服务器。传统的HTTP服务器一般使用C语言编写但Node.js使用JavaScript实现因此性能更好。
const http require(http)//url模块用于解析url参数
const urlrequire(url);//创建服务器监听3000端口
http.createServer((req, res) {//判断请求url是否为favicon.ico如果是则返回空这个请求是一个浏览器的默认请求可以忽略if (req.url /favicon.ico) {return}//设置响应头状态码为200内容类型为text/html;charsetutf-8这种才能正常显示中文res.writeHead(200, {Content-Type: text/html;charsetutf-8})//解析url参数这里的第二个参数为true表示解析query字符串返回object格式const parsedUrl url.parse(req.url,true);console.log(parsedUrl);let {pathname,query}parsedUrl;//分配响应内容res.write(switchPage(pathname))res.write(pqueryParams: ${JSON.stringify(query)}/p)//这里必须要end否则会出现卡死的情况res.end()
}).listen(3000, () {console.log(Server is running on port 3000)
})/*** 根据url返回对应的页面内容* param url* returns {*|string}*/
const switchPage (url) {return {/home: h1Home Page/h1pWelcome to my website/p,/about: h1About Page/h1pThis is a paragraph about me/pimg srchttps://picsum.photos/200 altRandom Image,/list: h1List Page/h1ulliItem 1/liliItem 2/liliItem 3/li/ul,}[url] || h1404 Not Found/h1pThe page you are looking for does not exist/p
}输入http://localhost:3000/about?name%E5%B0%8F%E5%BC%A0age33 可以解析出请求参数query以及pathname然后通过pathname找到映射的内容
nodemon自动启动服务简单使用
每次修改完代码都需要node server.js重启服务这种太麻烦了nodemon是一个实用的工具主要用于开发基于 Node.js 的应用程序。它能够监视 Node.js 应用程序中的文件变化当检测到文件变化时自动重新启动服务器。这样可以极大地提高开发效率开发者无需手动停止并重新启动服务器来使代码更改生效。
使用 npm install -g nodemon 安装就行
安装完成后在运行 Node.js 应用程序时将node命令替换为nodemon。例如如果你的应用程序的入口文件是server.js通常你是使用node server.js来启动服务器现在可以使用nodemon server.js。 启动成功