图片描述
以下是关于 node 的编程技术问答
问 题 使用express构建的服务,没有使用视图引擎,将项目目录设置为静态: app.use(express.static(__dirname + '/public')); app.use(express.static(__dirname + '/view')); app.use(express.static(__dirname + '/node_modules')); node入口文件index.js在根目录下,目录结构为: / /index.js /public /view /view/index.html(首页) /view/sidebar.html(侧边菜单) /public/js/app.js(首页的js文件) index.html中引入如下:
问 题 User.findOne({ activeToken: req.params.activeToken, activeExpires: {$gt: Date.now()} }, function (err, user) { if (err) { return next(err); } if (!user) { return res.status(400).end('您的激活链接无效,请重新注册!'); } user.active = true; // 删除已经没用的token和过期时间字段 delete user.activeToken; delete user.activeExpires; user.save(function
问 题 之前用过express的路由吧,现在看了react的路由,不过没用过,不造这玩意和express的有啥区别?写网站的时候两个路由都用吗? 解决方案 没用过express,也没使过react,不过我曾经学过laravel(php后端框架),现在工作中在用angularjs,他们也都有路由。我的感觉是 无论前端框架还是后端框架,都想尽办法能够足够支持建站,像路由这种功能,也无法说清到底该前端做还是后端做,毕竟都能做。但是术业有专攻,在提倡前后端分离的情况下,前端相对原来接手了更多的处理逻辑,包括路由。 如果使用react等前端框架建站的话,建议使用前端路由,在前端路由跳转中,始终能够保证是单页应用(SPA),后端更多是提供数据请求接口。
var express = require('express'); var router = express.Router(); var formidable = require('formidable'); router.post('/upload', function (req, res, next) { var form = new formidable.IncomingForm(); form.uploadDir = '../public/uploads'; form.encoding = 'utf-8'; form.maxFieldsSize = 20 * 1024 * 1024; // 保留后缀 form.keepExtensions = true; form.parse(req, function (err, fields, files) { if (err) { retur
express项目中用到了express-session,开发阶段前后端是两个不同的服务,所以前段用了代理的方式去请求服务端,发现这样session保存不了。请问是什么原因,该怎么解决呢? app.use(session({ secret: 'xxx', resave: true, saveUninitialized: false, maxAge: 1000 * 3600 })); 我前端用的是angular的脚手架,开发的时候前段启了一个服务为localhost:3000,然后服务端的地址是localhost:1994,这样算是不同的域的吧? 因为后端用了session,而session很关键的一步就是要在浏览器上设置一个cookie,好像在跨域的情况下,登录完之后cookie没有设置上去,response上是有cookie的 我应该从前端解决这个问题,还是从服务端解决呢?
问 题 用命令` node --v8-options | grep harmony 查看nodejs实现es6的新特性,输出结果是 output is not tty 解决方案 git bash的问题 The reason this doesn’t work as expected appears to be that git bash is passing the command through to the Windows cmd shell, and not handling the output stream correctly 参考 可以在power shell里面运行node --v8-options | Select-String "harmony"
在运行 nodojs 程序时 , 没有正常 ctrl+c 正常结束 进程, 导致 8080 端口一直可以访问 想结束掉 8080 端口 ➜ react-boilerplate2 git:(master) ✗ sudo lsof -n -P| grep :8080 ➜ react-boilerplate2 git:(master) ✗ lsof -i :8080 ➜ react-boilerplate2 git:(master) ✗ lsof -i tcp:8080 ➜ react-boilerplate2 git:(master) ✗ 结果死活都找不到 8080 端口 而访问 http://localhost:8080/ 一直有效