第一次接触Node.js开发,也用过一些小工具,在此分享给大家。小白出品的小白文,欢迎各位大神不吝赐教!先介绍一下具体需求:使用.html模板根据配置内容生成定制化的静态网页,并将这些静态网页部署到n台服务器上访问。为什么要生成大量具有非常相似值的静态文件,而不是根据要求使用数据库和渲染模板?项目背景如此,无需纠结投诉。这篇文章的重点是分享几个实用的小工具。Cheerio使用.html模板生成静态网页。我们需要解析模板文件并根据配置替换相应的元素。假设模板文件名为template.html,我们可以这样读取它:fs.readFile('template.html','utf8',function(err,data){if(err){//code}else{console.日志(数据);}});需要指定字符编码为utf8,否则数据值如下:获取.html模板内容后如何解析定位元素?正则表达式匹配有效,但有更好的方法:使用Cheerio。varcheerio=require('cheerio');fs.readFile('template.html','utf8',function(err,data){if(err){//code}else{var$=cheerio.load(data);var$elem=$('.elem');//代码}});$的使用与jQuery没有太大区别。简单Git,你发现我只在一台服务器上操作文件,用户会访问其中一台服务器来实现负载均衡,那么如何同步n台服务器的资源呢?以Github为媒介:文件的增删改查在服务器A上进行,然后提交到Github,服务器B从Github拉取更新,完成资源同步。您可以使用SimpleGit来执行函数,而不是在终端中执行Git命令行。SimpleGit:用于在任何node.js应用程序中运行git命令的轻量级接口。vargit=require('simple-git');git(path).checkout(branch).pull('origin',branch).add('.').commit(message).push('origin',branch);PM2NodeJS服务部署到服务器时,需要开启Daemon模式,即进程一直在后台运行。如果抛出的异常没有被try{}catch(err){}捕获,uncaughtException事件处理器会阻止进程直接退出。但是对于一些底层错误导致的进程崩溃,uncaughtException不再适用。可以使用PM2实现NodeJS服务的进程管理。当进程异常退出时,PM2会尝试重启进程,保证服务的稳定运行。执行以下命令启动服务并命名进程:pm2start./bin/www--name[name]服务端代码更新时,需要重启服务,执行:pm2restart[name]原进程将被杀死,并启动一个新进程。所以不需要通过lsof端口号手动kill进程。ExpressHttpProxyExpressHttpProxy:Express中间件代理请求到另一个主机并将响应传回原始调用者。渲染一个前端页面需要的数据可能来自n个不同领域的n个接口。浏览器有跨域行为,跨n个域请求n个接口是不现实的。API层就是将这些接口统一为一个接口供前端调用。扯远了。。。需求背景没那么复杂,需要把RPC(remotecall)的概念搬出去。但我希望以后有机会和大家分享我的经验。其实我只是想转发一个解决跨域问题的请求。使用ExpressHttp代理。varproxy=require('express-http-proxy');router.get('/hybrid/topic_reply/:id',proxy('backend.test.env',{userResDecorator:function(proxyRes,proxyResData){var数据=JSON.parse(proxyResData.toString('utf8'));返回JSON.stringify(data);}}));此时访问【我的域名】/hybrid/topic_reply/:id请求backend.test。env/hybrid/topic_reply/:id数据。其中data可以随意修改,返回值就是请求的返回值。作者:连小淼我的后花园:https://sunmengyuan.github.io...我的github:https://github.com/sunmengyuan
