1.热启动

每次修改app.js文件,都得重新启动项目,十分不方便。这里可以用hotnode插件实现热启动

安装:$ npm install -g hotnode

启动项目:$ hotnode app.js

2.静态文件部署

app.use(express.static(__dirname + '/src/static'));指定了src目录下的static为静态目录,__dirname 是app.js的绝对路径 node自带的

这样可以直接访问到静态文件 http://localhost:8081/aaa.js 其中aaa.js是放在src目录下的static的。

可以指定多个目录为静态文件夹 如:

app.use(express.static(__dirname + '/src/static1'));

app.use(express.static(__dirname + '/src/static2'));

3.跨域

安装:$ npm install express-http-proxy --save

使用:

var proxy = require('express-http-proxy');
var app = require('express')();
app.use('/proxy', proxy('www.google.com'));

4.调试

使用命令$ npm install -g node-inspector 安装。安装后就可以使用了。

启动调试项目 $ supervisor --debug app.js

再打开一个控制面板 启动调试监控 $ node-inspector -p 8081 这时cmd输出的“http://127.0.0.1:8081/?port=5858”就是调试网址

复制到浏览器 打断点跟js一样

付上我的app.js文件

//demo.js 文件
var express = require('express'),
hbs = require('hbs'),
cookieParser = require('cookie-parser'),
session = require('express-session'),
fs = require('fs'),
http = require('http'),
app = express(); app.use(cookieParser());
app.use(session({
secret: '123456',
cookie: {maxAge: 60 * 1000 * 30},
resave: false,
saveUninitialized: true
})); app.use(express.static(__dirname + '/src/static')); app.get('/hello', function (req, res) {
res.send('HELLO');
}); var user = require(__dirname + '/src/server/user.js');
app.get('/login', function (req, res) {
if (req.session.sign) {//检查用户是否登录
res.send('welecome <strong>' + req.session.name + '</strong>, 欢迎你再次登录');
} else {
user.login('王冲', '111qqq',function(userInfo){
req.session.sign = true;
req.session.name = userInfo.userName;
res.send('欢迎登录,' + req.session.name);
});
}
}); //app.get('/index', function (req, res) {
// console.log(__dirname);
// res.sendFile(__dirname + '/src/views/' + 'index.html');
//}); app.get('/process_get', function (req, res) {
var response = {
firstName: req.query.firstName,
lastName: req.query.lastName
}
console.log(response);
res.end(JSON.stringify(response));
}); hbs.registerPartials(__dirname + '/src/views/partials');
app.set('view engine', 'hbs');
app.set('views', __dirname + '/src/views/'); app.get('/news', function (req, res) {
var userInfo = {
userName: req.session.name
}
res.render('index', {title: 'hbs news demo', author: 'qujh',userInfo:userInfo});
}); app.get('/about/ygt', function (req, res) {
res.render('about/test', {title: 'hbs ygt demo', author: 'qujh'});
}); app.get('/about/about', function (req, res) {
res.render('about/about', {title: 'hbs about demos', author: 'qujh'});
}); var server = app.listen(8081, function () {
var host = server.address().address
var port = server.address().port
console.log("应用实例,访问地址为 http://%s:%s", host, port);
});

附上配置文件 package.json

{
"name": "expressgulp",
"version": "1.0.0",
"description": "express nodeJs hbs模板",
"main": "app.js",
"dependencies": {
"amui-hbs-helper": "^2.2.0",
"body-parser": "^1.17.1",
"browser-sync": "^2.18.8",
"cookie-parser": "^1.4.3",
"express": "^4.15.2",
"express-session": "^1.15.2",
"fs": "0.0.1-security",
"gulp": "^3.9.1",
"gulp-clean": "^0.3.2",
"gulp-replace": "^0.5.4",
"gulp-replace-task": "^0.11.0",
"gulp-seajs-concat": "^1.0.5",
"gulp-seajs-transport": "^0.4.0",
"gulp-uglify": "^2.1.2",
"handlebars": "^4.0.8",
"hbs": "^4.0.1",
"jquery": "^3.2.1",
"merge-stream": "^1.0.1",
"multer": "^1.3.0",
"seajs": "^3.0.2",
"session": "^0.1.0",
"yargs": "^7.0.2"
},
"devDependencies": {
"http": "0.0.0"
},
"scripts": {
"注释":"npm run test以debug形式启动,另打开cmd命令node-inspector -p 8081 启动断点调试命令",
"test": "supervisor --debug app.js",
"dev": "node app.js"
},
"keywords": [
"express",
"hbs"
],
"author": "qjh",
"license": "ISC"
}

express 热启动 静态文件部署 跨域解决 调试的更多相关文章

  1. Nginx配置服务器静态文件支持跨域访问

    在server中配置 add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Reque ...

  2. nginx 静态文件支持跨域访问权限

    一.原生态 location ^~ /repurchase-web/ {          alias /var/www/webapps/repurchase-web/;        } 二.支持跨 ...

  3. Springboot静态文件不更新的解决办法,以及Springboot实现热部署

    Springboot静态文件不更新的解决办法,以及Springboot实现热部署 原文链接:https://www.cnblogs.com/blog5277/p/9271882.html 原文作者:博 ...

  4. spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置

    spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ ...

  5. 访问本地json文件因跨域导致的问题

    我使用jquery的getJSON的方法获取本地的json文件,并进行操作,获取json 数据代码如下: $.getJSON("invite_panel.json",functio ...

  6. [转]vue跨域解决方法

      vue跨域解决方法 vue项目中,前端与后台进行数据请求或者提交的时候,如果后台没有设置跨域,前端本地调试代码的时候就会报“No 'Access-Control-Allow-Origin' hea ...

  7. JavaScript跨域解决方法大全

    跨域的定义:JavaScript出于安全性考虑,同源策略机制对跨域访问做了限制.域仅仅是通过“URL的首部”字符串进行识别,“URL的首部”指window.location.protocol +win ...

  8. Nginx反向代理node,实现让静态文件在同一域

    Nginx反向代理node,实现让静态文件在同一域 原文https://github.com/zhuangZhou/Blog/issues/4 不管是Vue还是React,还是传统的网站,与node服 ...

  9. form上传文件以及跨域异步上传

    要设置了enctype属性才能上传,需要使用上传的jar包,这里使用的是cos-26Dec2008.jar, 而且后台获取值的时候,getfile要放在第一位 一次设置好上传格式后没有上传文件,也就没 ...

随机推荐

  1. CRUD全栈式编程架构之界面层的设计

    Layout的设计 模板模式 mvc的模板特别类似设计模式中模板方法模式,结合Layout中RenderSection和RenderBody方法可以将部分html展现逻辑延迟到具体的视图页面去实现里面 ...

  2. QT学习之QPair类

    #QPair类 QPair是一个用来存储一对对象的容器模板.其有两个值,first和second. QPair() QPair(const T1 & value1, const T2 & ...

  3. [转载]互联网 免费的WebService接口

    股票行情数据 WEB 服务(支持香港.深圳.上海基金.债券和股票:支持多股票同时查询) Endpoint: http://webservice.webxml.com.cn/WebServices/St ...

  4. jQuery 效率提升建议

    jQuery简洁通用的方法集把编码者从繁重的工作中解脱出来,也拉低了进入javascript的门槛,初学者对浏览器兼容性一无所知的情况下,几行代码就可以写出超炫的特效.网上有一篇文章转载比较泛滥,已经 ...

  5. apache单ip配置多端口多站点

    1.修改 /etc/httpd/conf/httpd.conf 添加一个Listen,如: Listen 80 Listen 8001 Listen 8002 2.添加一个VirtualHost #v ...

  6. CentOS 7与 Windows双系统丢失Windows启动项及默认启动项修改

    1.Windows启动项消失的原因:   在安装Win7.8/10系统+CentOS7双系统后,默认会将mbr(Main Boot Record)改写为grub2,默认的CentOS7无法识别Wind ...

  7. NestedScrollView和RecyclerView使用,并设置间距

    NestedScrollView和RecyclerView使用,并设置间距: 效果图如下: 1.NestedScrollView 和RecyclerView嵌套问题(类似ScrollView 和lis ...

  8. Smartforms 设置纸张打印格式

    在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表: 1.运行事务代码SPAD:选择工具栏上的[完全管理]按钮——>选 ...

  9. (转)在图像处理中,散度 div 具体的作用是什么?

    出处http://www.zhihu.com/question/24591127 按:今天看到这篇文章,有点感慨,散度这个概念我初次接触到至少应该是在1998年,时隔这么多年后看到这篇文章,真的 佩服 ...

  10. 中通快递股份有限公司.net高级面试题

    中通快递分布式技术开发   gc垃圾回收原理 .net中,托管代码的内存管理是自动的,由GC进行管理,而对于非托管代码,则需要.net手动处理 CLR运行时,内存分为:托管堆和栈,其中栈用于存储值类型 ...