美文网首页
node开发

node开发

作者: 看到这朵小fa了么 | 来源:发表于2020-03-18 00:07 被阅读0次
node中的路径

process_cwd:工作路-执行node命令的文件夹的根路径
_dirname:当前执行文件的所在文件夹的绝对路径
filename:当前文件的绝对路径

node设置上传文件控制大小,设置
formidable: {
:{maxFileSize: 2*1024*1024}

1、长度控制通过content-length,设置返回码413
2、流式布局,将路径存入内存,文件存入磁盘

node开发和web开发的区别

对比 web开发 node开发
组成 ES规范+DOM的API ES规范+Node的API
稳定性 偶尔挂掉也只会影响一个客户端 KPI最少停机时间
内存 客户端独占cpu和内存,稍有泄露可以不管 要承载很多请求,极力压榨CPU和内存
日志记录 不依赖于日志,只需要发送 记录,存储,分析日志,监控状态
安全 主要预防XSS攻击 要兼顾防御各种攻击如数据库攻击,权限验证
集群和服务拆分 不需要 如何兼容集群拆分,通过Redis,拆分服务器集群

前端开发

1、确认需求
2、UI选型
3、实现

后端开发流程

1、数据存储,数据库,数据表的字段定义
2、接口定义,参数
3、假数据进行接口测试

nodemon 热更新

安装报错socket up,查找后设置“npm config set registry http://registry.npmjs.org/”后修复

服务端

  • 服务端稳定性 pm2的进程守护,自动重启
  • 充分利用系统资源 pm2多进程
  • 日志记录 pm2自带,将控制台日志写入文件
    常用命令:pm2 + start 启动| restart 重启| stop 停止| delete 删除(不能再次启动)| info 进程服务信息,配置信息 | log 日志(分等级)| monit 占用系统资源情况,日志
  • 多进程:单个进程内存受限,单进程崩溃,多核服务;redis实现多进程通信
    pm2配置文件
{
    "apps": {
        "name": "test-pm2-config",
        "script": "app.js",
        "watch": true,
        "ignore_watch": [
            "node_modules","logs"
        ],
        "error_file": "logs/err.log",
        "out_file": "logs/out.log",
        "log_date_format": "YYYY-MM-DD HH:mm:ss"
    }
}

mysql常用语句

  • 建表的时候要选择utf8,否则插入中文报错
use myblog;
// 插入
insert into user(username, `password`, realname) values('zhangsan', '123', '张三')
// 查询 条件 模糊查询 正序倒序
select * from users
select id, username from users
select * from users where username='zhangsan' and `password`='123'
select * from users where password like '%1%' order by id desc 
insert 

sql密码重置

https://www.jianshu.com/p/93210aa24539

node连接sql

1、通过process.env.NODE_NEV 配置数据库
2、通过mysql插件连接数据库
3、基于promise封装exec方法,通过mysql.query() 执行sql语句

redis

set key value // 设置
get key // 获取
keys * // 查询全部
del key // 删除

nginx

配置: location / { proxy_pass: // 静态资源}
location /api {proxy_pass: // 接口; proxy_set_header: host $Host }

日志

日志分为服务日志和自定义日志,需要日志拆分和日志分析
存储:通过stream写到文件当中,而不用mysql等数据库,日志不需要表查询,且日志的体积大,文件类型易迁移,无需环境配置,日志也不追求同步,更适合存放在文件当中在文件读写中遇到的瓶颈是IO操作,同时也有网络带宽的问题
分割:通过crontab 执行定时任务(sh脚本)

// crontab -e进入编辑模式
* 0 * * * * sh /Users/XXX/Desktop/code/node/src/utils/copy.sh
// copy.sh脚本 进行拷贝和清空源文件
cd /Users/XXX/Desktop/code/node/logs
cp access.log $(date +%Y-%m-%d).access.log

echo "" > access.log

分析: 通过readline(基于stream的操作 快速)进行逐行分析

安全

  • sql注入 通过mysql.escape() 方法进行处理,对可能是sql语句的符号进行转义
  • XSS攻击 通过xss模块进行转义失去js代码的作用,不具有攻击功能 < => &lt /> => &gt, 可以转化为\u003 \u00e来代替尖括号(MVC的处理方式),对于有JSON转义的可以通过添加[0xc0]来进行占位

进程

进程发展:单进程-复制进程-多线程-事件驱动(解决了内存占用和切换上下文的消耗)
集群稳定:自动重启、自杀信号、限量重启、日志监控,状态存储(redis),cluster单机集群
多进程架构:

  • 进程间通信 是底层通过命名管道(Windows)进行通信,主进程在创建工作进程之前,会先创建一个IPC通道,创建工作进程的时候通过环境变量将这个IPC通道的文件描述符交给工作进程,在工作进程启动时去链接IPC通道
  • node实现多进程监听同一个端口,进程端口启动后文件描述符被占用,不能共用,而node通过设置端口的SO_RESOADDR端口复用,使得端口的文件描述符为抢占式的使用方式,每一片时间只为一个进程服务

相关文章

  • Node全栈技术开发介绍

    Node全栈技术开发介绍 node和js介绍 node服务端开发 node前端vuejs node前端reactj...

  • 前端Node.js 基础

    一 .Node.js 基础 目录 Node开发概述Node运行环境搭建Node.js快速入门 1. Node开发概...

  • Node.js的读书笔记

    书单阅读:《Node.js开发指南》《Node.js入门经典》《Node与Express开发》《Node即学即用....

  • node及npm开发环境版本管理

    node开发环境版本管理 针对node环境的管理 node开发跟php开发一样面临的一个问题时node runti...

  • node express 微信开发

    wechat-node 微信开发 基于node express框架 介绍 node express 微信开发 获取...

  • node.js笔记

    node.js 介绍 node.js是什么 node.js 是一个开发平台,就像java开发平台...何为开发平台...

  • Node学习篇-爬虫

    首先我们默认你已经安装node开发环境,node开发IDE (什么webstrom vscode sublime网...

  • 12_Node.js Web 开发

    下面开始用 Node.js 进行 Web 开发。 我是通过《Node.js开发指南》这本书来学习 Node.js ...

  • Nodejs知识点

    Nodejs基础部分 为什么要学习Node? Node使用Js语法去开发后端应用 一些公司要求前端掌握Node开发...

  • weex快速上手

    如何搭建本地开发环境进行 Weex 开发。 使用Homebrew 进行安装 node;通常,安装了 Node.js...

网友评论

      本文标题:node开发

      本文链接:https://www.haomeiwen.com/subject/iwmcehtx.html