手机版

用node.js模仿一小部分Apache函数

时间:2021-08-21 来源:互联网 编辑:宝哥软件园 浏览:

首先,这个例子使用了服务器端渲染技术。服务器端渲染,说白了就是在服务器端使用模板引擎。在这里,我将简要介绍服务器端渲染和客户端渲染的区别。

服务器端呈现和客户端呈现的区别:

客户端渲染不利于搜索引擎优化。服务器端呈现可以被爬虫抓取,而客户端异步呈现很难被爬虫抓取(例如AJAX)。大多数网站既不是纯异步(客户端)也不是纯服务器端呈现,而是两者的结合。比如JD。COM的商品列表使用服务器端渲染进行SEO搜索引擎优化。说白了就是可以被爬虫搜索抓取(搜索引擎本身也是爬虫)但是,JD。COM的产品评论列表是为了用户体验,不需要SEO优化,所以用客户端渲染来简单判断内容是服务器渲染还是客户端渲染

最简单的方法是:

点击访问一个页面(这里我们以JD.COM为例)随便访问一个商品页面,然后复制商品标题,然后右键查看网页的源代码,在源代码页面按Ctrl f,然后将复制的内容粘贴到里面,服务器渲染可以搜索,否则就是客户端渲染。使用艺术模板模板引擎

安装:在要安装的目录中打开命令行工具,输入npm install art-template,那么会自动生成node_modules目录(前提是系统已经安装了Node.js环境),并在要使用的文件模块中加载art-template : const template=require(' art-template ');你可以使用它,官方文档地址:https://aui.github.io/art-template/zh-cn/docs/index.html阿帕奇部分功能实现

Node.js相关API(在本例中使用):

基于http

CreateServer() :在():上创建一个服务器来提供服务:服务数据、发送请求、接收请求、处理请求、发送响应等。listen():绑定端口号,并基于fs(文件系统)启动服务器

ReadFile():读取文件(参数1是文件路径,参数2是回调函数)readdir():基于path(路径)读取目录(参数1位目录路径,参数2是回调函数)

Extname():获取文件的后缀名称,并在任意位置创建一个www文件夹(文件名可以是任意的):

写HTML:

!DOCTYPE html html lang=' en ' head meta charset=' utf-8 ' title index of/{ { title } }/title/head body h1 index of/{ { title } }/h1 ul lia href='/' rel=' external no follow ' Parent Directory/a/Li { {每个文件} } lia href='/{ { $ value } } ' rel=' external no follow ' { $ value } }//a/Li {/each } }/ul/body/html node . js :

const http=require(' http ');const fs=require(' fs ');const template=require(' art-template ');const path=require(' path ');const端口=5000const服务器=http。CreateServer();server.on('request ',(request,response)={ let URL=request。网址;让www dir=' d :/www ';fs.readFile(' ./template.html ',(错误,数据)={ if(错误){返回响应。结束(' 404未找到');} //1.如何得到wwwDir目录列表中的文件名和目录名//fs.readdir //2 .如何将得到的文件名和目录名替换到template.html中//2.1 在template.html中需要替换的位置预留一个特殊的标记//2.2 根据文件生成需要的超文本标记语言内容//模板引擎if (url!=='/'){ www dir=URL;}让文件结束=路径。外部名称(www dir);/** * 如果是文件,则访问该文件* 如果是文件夹,则访问里面的内容*/if (fileEnd!=='') { fs.readFile(wwwDir,(错误,数据)={ if(错误){返回响应。结束(' 404未找到');} //获取文件后缀名(具体问题具体分析,这里我只设置。文本文件(文本文件)文件的编码类型)if (fileEnd===' .txt '){响应。setheader(' Content-Type ',' text/plain;charset=utf-8 ');} if (fileEnd===' .jpg'){回应。setheader(' Content-Type ',' image/JPEG ');} if(文件结尾===。=.MP4’){回应。setheader(' Content-Type ',' video/mpeg 4 ');} response.end(数据);});} else { console。日志(www . dir);fs.readdir(wwwDir,(错误,文件)={ if(错误){返回响应. end('找不到此目录');} console.log(文件);//files: [ 'a.txt ',' apple ',' images ',' index.html ',' static ',' videos' ]让html字符串=模板。渲染(数据。tostring(),{ title: wwwDir,files: files,});//3.发送响应数据回应。end(HTMl str);});} });});server.listen(端口,()={ console . log(` 0服务器已经开启,您可以通过http://127.0.0.1:${port}访问.`);});总结

以上所述是小编给大家介绍的使用node.js模仿街头流氓小部分功能,希望对大家有所帮助,如果大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

版权声明:用node.js模仿一小部分Apache函数是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。