1、

安装:

npm install -g express

npm install -gexpress-generator

生成项目:

express  -e  projectName

express项目修改不重启

$ supervisor node bin/www

让supervisor监听模板文件的改动

$ supervisor --extensions html,css,js ./bin/www

2、Express+Nodejs 下的登录拦截实现

app.use(function (req, res, next) {
var url = req.originalUrl;
console.log("url"+url);
if (url != "/login" && !req.session.user) {
req.flash('error', "登录超时,请重新登录");
return res.redirect("/login");
}
next();
});

注意:静态资源app.use(express.static(path.join(__dirname, 'public')));放在app.use(express.session());后面,登录拦截的前面

登录拦截要放在node路由配置的前面

3、页面多个异步数据获取渲染

var async  = require('async');

var task1 =function(callback){
tool.sendRequest(headers,param,url,function(data){
page=tool.page(data.count,pageNo,10);
callback(null,{data:data,page:page})
})
}

var task2 =function(callback){
tool.sendRequest({"authId": authId,"userId":userId},{},config.interface.getGoodsClassify,function(data){
callback(null,{data:data})
})
}

async.parallel([task1,task2],function(err,result){
if (err) { console.log(err);}
res.render('goods', {
data:result[0].data,
name:name,
classifyId:classifyId,
sort:sort,
sortlist:result[1].data,
page:page
});
})

4、时间格式化

npm install moment --save

moment = require('moment')

console.log(moment(new Date()).format('YYYY-MM-DD HH:mm:ss'))

5、如何理解JavaScript中给变量赋值,是引用还是复制

JavaScript中的值分为2大类:基本类型和引用类型。每种类型下面又分为5种类型。

基本类型:数字类型:Number;字符串类型:String;布尔类型:Boolean(true和false);Undefined;Null。

引用类型:函数、数组、日期、正则、错误。

注意:所有的引用类型都是对象,也就是Object对象下的一个类。

对基本类型,是按值访问的,即通过值复制的方式来赋值和传递。

对引用类型,是按引用访问的,即通过引用复制的方式赋值和传递。

对于基本类型,将其值赋给一个变量时,就是将这个值赋值给了变量,值本身不会发生任何变化。在给变量重新赋值后,变量的值就变化了。

以数组引用类型为例。JavaScript支持在定义变量的时候同时给它赋值,即var a=[1,2,3]同时定义一个对象并将其赋值给变量。

定义一个对象(数组[1,2,3]),此时这个对象在内存中建立。当给把这个对象赋值给一个变量时,变量a仅仅是对这个对象的引用,而不是将该对象复制到了该变量中。即变量a中存储的是指向对象的地址。

一 、nodejs下载文件方式为,设置响应头,文件传输方式分为两种:

1.1 直接读取文件

fs.readFile(filePath, function(isErr, data){
if (isErr) {
res.end("Read file failed!");
return;
}
res.writeHead(200,{
'Content-Type': 'application/octet-stream', //告诉浏览器这是一个二进制文件
'Content-Disposition': 'attachment; filename=' + fileName, //告诉浏览器这是一个需要下载的文件
});
res.end(data)
})

1.2 stream

res.writeHead(200,{
'Content-Type': 'application/octet-stream', //告诉浏览器这是一个二进制文件
'Content-Disposition': 'attachment; filename=' + fileName, //告诉浏览器这是一个需要下载的文件
});
fs.createReadStream(filePath).pipe(res);

二、phantom 网页转PDF并下载

  async function renderToPdf(authId, courseID, courseName) {
const instance = await phantom.create();
const page = await instance.createPage(); // 设置视口大小,相当于浏览器窗口
page.property('viewportSize', { width: 1200, height: 700 }); // 设置页面尺寸来控制在 PDF 中的展现形式
page.property('paperSize', {
format: 'A4',
width: '1200px',
height: '700px',
orientation: 'portrait'
}); let url = global.dict.domain + '/viewPDF?courseID='+courseID + '&authentication=' + authId;
const status = await page.open(url);
console.log('status: ', status);
const pdf = await page.render('./pdf/' + courseName + '.pdf');
console.log('pdf: ', pdf);
await instance.exit();
}
      await renderToPdf(authId, courseID, "download");

      fs.readFile("./pdf/download.pdf", function(isErr, data2){
if (isErr) {
res.render('error.ejs', {
error: '导出文件出错'
});
}
res.writeHead(200,{
'Content-Type': 'application/octet-stream', //告诉浏览器这是一个二进制文件
'Content-Disposition': 'attachment; filename=download.pdf', //告诉浏览器这是一个需要下载的文件
});
res.end(data2)
})

Linux提供的web服务,能在网页展示中文,下载pdf出现中文无法读取!要在Linux服务端安装对应的字体库

 
 

express框架开发笔记的更多相关文章

  1. express框架开发案例

    express是基于Node.js平台的web应用开发框架,用express框架开发web项目可以直接构建整个项目框架并且将前端页面跟后台贯穿起来,用起来还是灵活的:最近刚开始学习,写篇博客总结下,涉 ...

  2. express框架学习笔记

    用express框架也有一段时间了,下面我总结一下我做项目时迷惑的点: app.use()与app.get()的区别 app.use()是用来为应用程序绑定中间件的,当第一个参数是path是,第二个参 ...

  3. NodeJs使用Express框架开发时的快速调试方法

    习惯了php开发,可以直接使用echo或者var_dump()将想要查看的变量结果输出到网页查看,非常的方便.但是使用express开发时,每次修改文件后,都需要使用npm start命令重启服务,然 ...

  4. 超详细!!Spring5框架开发笔记

    Spring5开发教程 简介 spring特性 sping是轻量级的开源的JavaEE框架 Spring可以解决企业应用开发的复杂性 Sping两个核心的部分:IOC和AOC IOC:控制反转.把创建 ...

  5. 【原创】基于NodeJS Express框架开发的一个VIP视频网站项目及源码分享

    项目名称:视频网站项目 开发语言:HTML,CSS(前端),JavaScript,NODEJS(expres)(后台) 数据库:MySQL 开发环境:Win7,Webstorm 上线部署环境:Linu ...

  6. Express框架开发知识点总结

    express --view=pug myapp 以上语句在当前工作目录中创建名为 myapp 的 Express 应用程序,采用的模板是jade. 以前还在纠结使用hbs模板引擎或者ejs模板,实际 ...

  7. 吴裕雄--天生自然Django框架开发笔记:Django Admin 管理工具

    Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: ...

  8. 吴裕雄--天生自然Django框架开发笔记:Django 创建第一个项目

    Django 管理工具 安装 Django 之后,您现在应该已经有了可用的管理工具 django-admin.可以使用 django-admin 来创建一个项目: 可以来看下django-admin ...

  9. 吴裕雄--天生自然Django框架开发笔记:Django简介

    Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架,由Python写成. ...

随机推荐

  1. jacob自己动生成word文档目录

    任务目的 1自动生成word文档目录. 用例测试操作步骤 在一个word文档的第二页填写占位符: {目录}保存.调用程序读取目标文档,自动根据标题生成目录到{目录}位置. 效果 关键代码 insert ...

  2. 编程中经常看到上下文context,这个上下文指得是什么?

    举个栗子:小美气呼呼对我说:“你去死吧”,我当时哭了. 场景1:小美刚转学到我们学校,我暗恋了她很久,有一天鼓足勇气,向她表白,小美气呼呼对我说:“你去死吧”,我当时就哭了.场景2我跟小美从小青梅竹马 ...

  3. unity读取json文件

    首先填表 [escel转json]注意,粘贴表之后,需要把最后的空行删掉 http://www.bejson.com/json/col2json/ [json格式化] http://www.bejso ...

  4. Radix tree--reference

    source address:http://en.wikipedia.org/wiki/Radix_tree In computer science, a radix tree (also patri ...

  5. Cannot connect to VM com.sun.jdi.connect.TransportTimeoutException

    Cannot connect to VM com.sun.jdi.connect.TransportTimeoutException 描述 在用eclipse进行debug的时候弹出了上面的错误,在s ...

  6. bzoj 4771: 七彩树

    Description 给定一棵n个点的有根树,编号依次为1到n,其中1号点是根节点.每个节点都被染上了某一种颜色,其中第i个节 点的颜色为c[i].如果c[i]=c[j],那么我们认为点i和点j拥有 ...

  7. (六-1)Firefox插件安装

    1.安装火狐插件 ①旧版本firefox 火狐浏览器右上角-->附件-->获取更多附件-->搜索-->Firebug 安装 Firebug 扩展:https://addons. ...

  8. embedded tomcat运行java web,Unable to compile class for JSP

    环境 eclipse:4.5.2 jre:1.8 java project compiler:1.8 embedded tomcat:7.0.32 可以正常启动,但是访问时,会报错. HTTP Sta ...

  9. 嵌入式Tomcat Web服务器的使用

    在运行web工程时,常常要频繁启动tomcat,使用嵌入式tomcat可以减少部分重复操作. 1.下载tomcat5.0.28embed.zip 解压文件夹复制到工程下. http://archive ...

  10. Bash 脚本语法

    每次学了忘,忘了学,怎么记不住,因为长时间不用了 Bash 流程控制 循环 for循环 for item in $list do echo $item done 另一种与C语言类似的写法 ; i< ...