标签‘NodeJS’

node gRPC *.proto 生成 js/ts

最近项目增加node的bff(Backends For Frontends)层,后端用了golang&gRPC。node端使用了nestjs框架,为了ts能够识别proto定义的接口,希望通过proto生成gRPC接口文件,期间绕了不少弯路,简单分享下。

首先组内同学找到这个库
https://github.com/agreatfool/grpc_tools_node_protoc_ts
按照示例,命令如下,发现不好用

查看更多...

为你的Express应用增加CSRF防护

CSRF(Cross-site request forgery)跨站请求伪造,也被称为"One Click Attack"或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

众所周知,Web系统并没有绝对的安全,就比如我们公司年前遇到的情况,有些恶心网站通过网络抓包等手段,截取验证码发送接口,通过伪造请求实现了传入任意手机号并发送验证码的功能,虽然这看起来并没有什么用,但当这些不法分子拔了成百上千个接口后,就形成了一个疯狂的短信轰炸机,对于服务提供者,这些地下网站只要有人使用,就会不断得消耗短信费用,给企业带来不必要的损失。 查看更多...

sudo * 提示 command not found 解决

linux下经常遇到使用非root用户安装软件,使用sudo时提示找不到命令。

比如使用nodejs时候,出现

sudo: node: command not found
sudo: npm: command not found

很多文章说export临时修改环境变量或者直接sudo后chown指定命令所在文件夹的所有者,但是我们通常是在非root用户下使用,所以只需在root用户下增加部分软连接即可 查看更多...

简易Express资源合并中间件http-concat

相信很多前端童鞋都见过一些网站有如下url输出js或者css

http://example.com/??script1.js,script2.js,build/script.js

http://example.com/??script1.js,script2.js,build/script.js?v=2016

http://example.com/??style1.css,style2.css,build/style.css

http://example.com/??style1.css,style2.css,build/style.css?v=2016

在以前,使用YUI、DOJO等企业前端库的时候,往往会用到类似功能,最近使用express,搜了下似乎没有类似中间件,索性自己写一个,参数形式参考了阿里的nginx-http-concat(似乎目前大部分有此类功能的网站都是采用阿里的nginx模块实现)。代码如下:
查看更多...

Node应用的进程管理器之PM2

一直以来,没有机会在商业项目、网站上正式用起来NodeJS,说起来挺遗憾的,最近公司网站重构,同时为了配合做些SEO优化,经过一系列筛选后选择了使用NodeJS来支撑前端展现。

在刚接触NodeJS时,也像很多人一样,想问有没有针对NodeJS的热部署方案,后面发现windows下使用nodemon挺好用,但只是简单的自动重载,似乎放到网站上有些不够用,看到翻译后的express官网有介绍进程管理器StrongLoop Process Manager、PM2和Forever,StrongLoop Process Manager是IBM一家子公司维护的,不过国内没见太多人用,大部分都是选择Forever或者PM2(似乎现在PM2使用率更高),对比后选择了PM2。

PM2 是一个带有负载均衡功能的 Node 应用的进程管理器。使用它,可以充分利用CPU多核优势,让你的NodeJS程序完全应用服务器CPU,并且可以保证进程"永远在线",同时,可以实现0秒重载等。

PM2主要特性如下:

1、内建负载均衡(使用 Node cluster 集群模块)
2、后台运行
3、0 秒停机重载,因为带了有负载均衡功能,可以使用pm2 gracefulReload app来实现平滑重载
4、具有 Ubuntu 、CentOS等启动脚本,可以简单实现开机自动启动
5、停止不稳定的进程(避免无限循环) 查看更多...

我为什么选择Nunjucks作为NodeJS模板引擎

最近换了工作,在新的工作中,需要实现后端渲染,故而一改最初的纯html+js形式,选择页面框架、TDK及部分页面后端渲染,由于后台采用java开发,一开始曾考虑另起一个tomcat服务,用于渲染前端页面,而实际搭建完框架后发现,一年多不碰java(期间虽然用过Groovy、kotlin,但实际开发起来还是不如js来得畅快),已经对java的繁琐有些不耐烦,最后转而选择采用NodeJS做后端渲染,一来部分前端模板可以复用(后面发现复用其实是个很纠结的想法),二来做前端开发的兄弟也可以快速上手,相比他们并不懂的java来说,毕竟NodeJS更容易学习接受。

确定了适用NodeJS,下面就确定一下大概框架,采用了目前常见的组合——express+template,因为最初前端使用了所谓最快的模板引擎artTemplate,这里tempate想进行复用,就采用了服务器版artTemplate,实际测试发现并不符合我的需求,由于最近一年使用PHP的YII框架,其中模板layout可以使用block,很方便重写样式、脚本等部分,这里实测后发现,后端模板如果没有layout,基本和写纯静态无异了。 查看更多...

简易NodeJS、PHP跨域代理[Restful请求]

最近测试一些东西,需要跨域访问Restful接口,因为是测试,不可能改变接口形式,所以jsonp方案直接Pass。

本地测试时简单写了几行NodeJS代码,对特定路径下的请求进行转发后回传,因为使用WebStorm开发,NodeJS不可以和WebStorm内置服务器使用相同端口,虽然可以通过配置本地服务器,完全将NodeJS作为服务器,但那样需要解决静态资源的输出,写东西过多,偏离初衷,这里不再赘述。

不过如果你是做前后端完全分离的项目,大可以找个开源的Web框架来用,比如express等,这里不多介绍。

总之但思路就这样了,可能不太完善,代码如下: 查看更多...