node.js项目开发问题集锦(不定期更新,随时把开发过程中遇到的问题加上)--转载

1、用express开发站点时,怎么定义通用的头部和尾部
    方案1:用类似asp时代的include添加,如ejs模板:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <% include ../header.ejs %>  
  2. <h1 class="page-header">  
  3. 这里是内容。  
  4. 注:..表示header.ejs在上一级目录,ejs扩展名可以去掉,直接写:include ../header  
  5. </h1>  
  6. <% include ../footer %>  
    方案2:用类似于MVC的layout模板,这个要安装一个模块:  npm install express-partials
          具体如何应用,大家可以搜索: node.js express layout
          这里就不详述了


2、Windows下,使用WebStorm8,无法调试express项目,排查了半天,团队里有些人能调试,有些人不能调试,
现象是点击运行,能正常运行站点,但是点击调试,在WebStorm的Console窗口,就会出现进程自动退出的提示:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. "C:\Program Files (x86)\JetBrains\WebStorm 8.0.3\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" --debug-brk=54923 --nolazy bin\www  
  2. debugger listening on port 54923  
  3.   
  4. Process finished with exit code -1073741510 (0xC000013A: interrupted by Ctrl+C)  
汗,竟然说是Ctrl+C导致的中断…… 根据这个提示,百度和Google都查了半天,一点消息也没有,

反复排查可调试的项目和不能调试的项目,终于发现了,原因就是:
项目所在的路径里,含有中文字符……
记住:开发node.js项目,文件所在路径,一定不能有中文字符

3、node.js的项目文件一定要用utf-8的编码格式保存,否则文件内容里的中文等双字节字符,就会出问题,出现各种莫名其妙的问题哦

4、node.js开发的站点,只能监听指定端口,不像IIS,不支持多主机头(多域名),如果确实要支持多主机头,只能通过nginx之类的反向代理,映射到不同端口的node.js进程

5、json文件里不支持注释,任何格式的注释都不支持,如 //  /* */ <!-- -->.
如果希望添加注释,只能用键值对方案,如:{"a":123, "a的含义": "就是一个数字"}

6、node.js没有类似Asp.net里的Web.config文件,不过可以用一个json对象代替,比如在项目根目录下添加一个settings.js文件,内容如下:

[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. module.exports = {  
  2.     abc : 123,  
  3.     def : "www.baidu.com",  
  4.     mysql:{  
  5.             host:"192.168.189.100",  
  6.             user:"root",  
  7.             database:"dbTest",  
  8.             port:"3306",  
  9.             password:'123',  
  10.             connectionLimit:10,  
  11.             charset:"utf8"  
  12.         }  
  13. };  
然后在其它文件中这么调用:
[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. var mysql = require('mysql');  
  2. var settings = require('../settings');  
  3. // 获取def属性,输出  
  4. console.log(settings.def);  
  5. // 获取mysql连接信息  
  6. var pool  = mysql.createPool(settings.mysql);  

7、express项目中,直接创建并返回静态html文件
方案1:把html文件放到项目 的public目录下,如/public/abc/def.html
    那么请求url就是: http://localhost:3000/abc/def.html
方案2:读取文件后,输出字符串的方式,代码如下:
[javascript]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. var express  = require('express');  
  2. var path  = require('path');  
  3. var router = express.Router();  
  4.   
  5. router.get('/'function(req, res) {  
  6.     sendHtmlFile(res, "./index.js");  
  7. });  
  8.   
  9. module.exports = router;  
  10.   
  11. function sendHtmlFile(res, relativePath){  
  12.     var htmlpath = getAbsPath(relativePath);  
  13.     // 按扩展名自动识别并输出响应的Content-Type  
  14.     res.sendfile(htmlpath);  
  15. }  
  16.   
  17. // 转换相对路径为绝对路径  
  18. function getAbsPath(relativePath){  
  19.     var htmlpath = __dirname + "/" + relativePath;  
  20.     return path.resolve(htmlpath);  
  21. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值