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服务端安装对应的字体库

 

转载于:https://www.cnblogs.com/ckmouse/p/8022347.html

express框架开发笔记相关推荐

  1. 【Go 框架开发】Zinx 框架开发笔记

    Zinx 框架开发笔记 Zinx 框架开发笔记 Zinx - V0.1 构建最基础的 server Zinx - V0.2 连接封装与业务绑定 Zinx - V0.3 框架路由模块 Zinx - V0 ...

  2. express框架学习笔记

    express简介 express是一个基于Node.js平台的极简的.灵活的WEB应用开发框架.express是一个封装好的工具包,封装了很多功能,便于我们开发WEB应用(HTTP服务) expre ...

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

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

  4. C#开发笔记之01-为什么开源框架会大量的使用protected virtual?

    C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/957 访问. 我们在很多开源框架中会经常看到prote ...

  5. JNI开发笔记(三)--JNI工程的框架分析

    JNI工程的框架分析 引 1. JNI工程的组成部分 2. 各个部分之间的关系 引 JNI开发笔记(一)–Android Studio安装与环境搭建 JNI开发笔记(二)–创建JNI基础工程并运行 1 ...

  6. Android开发笔记(一百一十)使用http框架上传文件

    HTTP上传 与文件下载相比,文件上传的场合不是很多,通常用于上传用户头像.朋友圈发布图片/视频动态等等,而且上传文件需要服务器配合,所以容易被app开发者忽略.就上传的形式来说,app一般采用htt ...

  7. 《SpringBoot框架开发技术整合》笔记(一)

    文章目录 前言 第一章 构建简单WEB项目 第二章 SpringBoot接口返回Json 第三章 SpringBoot热部署 第四章 SpringBoot资源文件属性 前言     笔者近期在慕课网上 ...

  8. 《SpringBoot框架开发技术整合》笔记(二)

    文章目录 前言 第五章 SpringBoot配置全局的异常捕获 一. 页面跳转形式 二. ajax形式 三. 统一返回异常的形式 参考 前言     笔者近期在慕课网上学习了<Springboo ...

  9. Node 笔记肆章 Express框架

    1. Express框架简介及初体验 1.1 Express框架是什么 Express是一个基于Node平台的WEB应用开发框架,它提供了一系列的强大特性,帮助你创建各种WEB应用.我们可以使用 np ...

最新文章

  1. 【BZOJ3994】[SDOI2015]约数个数和 莫比乌斯反演
  2. 最小操作系统的代码解释、NASM的初步使用
  3. 学习iBatis时的一个苦逼经历
  4. 换种思路去理解设计模式
  5. 第十一节:动态绑定class和style
  6. ValidateInput(false)与this.ValidateRequest = false无效的解决方案
  7. 智慧城市特效(建筑颜色渐变、飞线、扫光、扫描、光墙、线路、水、道路线条、锥形标、漫游)three+shader
  8. 黑马程序员---java基础------------------基础中的基础学习
  9. Officescan防毒墙安装部署
  10. 数字图像处理(DIP)作业8 matlab or OpenCV 对lena 图片进行边缘提取
  11. Web后端的基础知识
  12. 东野圭吾《沉默的巡游》简单书评(含剧透)
  13. 【产品经理】产品经理进阶之路(六):互联网思维详解
  14. java实现第四届蓝桥杯猜年龄
  15. 腾讯3轮面试都问了Android事件分发,最强技术实现
  16. 方舟生存服务器没有响应怎么办,方舟生存进化搜服务器闪退怎么办? Fata error临时解决办法一览...
  17. [附源码]JAVA毕业设计景区门票系统(系统+LW)
  18. android 组件透明,万能小组件透明小组件-万能小组件透明背景设置v1.0.0 安卓版_永辉资源网...
  19. php微信公众号测试账号密码,微信公众号测试账号配置失败竟然是因为一个字符...
  20. 好的数据库面试题集合

热门文章

  1. 人月神话贯彻执行_《人月神话》读后感与读书笔记
  2. 计算机网络联网方法实验报告,计算机网络技术》实验报告.doc
  3. 2021 ICPC Asia Jinan Regional Contest-J Determinant(取模高斯消元)
  4. html2canvas在手机不行,html2canvas - 在iOS设备上崩溃
  5. 文本预处理及keras的学习
  6. 单点登录有关跨域的点
  7. mybaties中通用mapper的基本使用
  8. echarts 报错问题 is null 或者未定义等问题
  9. Python 爬虫的工具列表
  10. OpenBSD 现已支持 USB 3.0