express框架开发笔记
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框架开发笔记相关推荐
- 【Go 框架开发】Zinx 框架开发笔记
Zinx 框架开发笔记 Zinx 框架开发笔记 Zinx - V0.1 构建最基础的 server Zinx - V0.2 连接封装与业务绑定 Zinx - V0.3 框架路由模块 Zinx - V0 ...
- express框架学习笔记
express简介 express是一个基于Node.js平台的极简的.灵活的WEB应用开发框架.express是一个封装好的工具包,封装了很多功能,便于我们开发WEB应用(HTTP服务) expre ...
- Express框架开发知识点总结
express --view=pug myapp 以上语句在当前工作目录中创建名为 myapp 的 Express 应用程序,采用的模板是jade. 以前还在纠结使用hbs模板引擎或者ejs模板,实际 ...
- C#开发笔记之01-为什么开源框架会大量的使用protected virtual?
C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/957 访问. 我们在很多开源框架中会经常看到prote ...
- JNI开发笔记(三)--JNI工程的框架分析
JNI工程的框架分析 引 1. JNI工程的组成部分 2. 各个部分之间的关系 引 JNI开发笔记(一)–Android Studio安装与环境搭建 JNI开发笔记(二)–创建JNI基础工程并运行 1 ...
- Android开发笔记(一百一十)使用http框架上传文件
HTTP上传 与文件下载相比,文件上传的场合不是很多,通常用于上传用户头像.朋友圈发布图片/视频动态等等,而且上传文件需要服务器配合,所以容易被app开发者忽略.就上传的形式来说,app一般采用htt ...
- 《SpringBoot框架开发技术整合》笔记(一)
文章目录 前言 第一章 构建简单WEB项目 第二章 SpringBoot接口返回Json 第三章 SpringBoot热部署 第四章 SpringBoot资源文件属性 前言 笔者近期在慕课网上 ...
- 《SpringBoot框架开发技术整合》笔记(二)
文章目录 前言 第五章 SpringBoot配置全局的异常捕获 一. 页面跳转形式 二. ajax形式 三. 统一返回异常的形式 参考 前言 笔者近期在慕课网上学习了<Springboo ...
- Node 笔记肆章 Express框架
1. Express框架简介及初体验 1.1 Express框架是什么 Express是一个基于Node平台的WEB应用开发框架,它提供了一系列的强大特性,帮助你创建各种WEB应用.我们可以使用 np ...
最新文章
- 【BZOJ3994】[SDOI2015]约数个数和 莫比乌斯反演
- 最小操作系统的代码解释、NASM的初步使用
- 学习iBatis时的一个苦逼经历
- 换种思路去理解设计模式
- 第十一节:动态绑定class和style
- ValidateInput(false)与this.ValidateRequest = false无效的解决方案
- 智慧城市特效(建筑颜色渐变、飞线、扫光、扫描、光墙、线路、水、道路线条、锥形标、漫游)three+shader
- 黑马程序员---java基础------------------基础中的基础学习
- Officescan防毒墙安装部署
- 数字图像处理(DIP)作业8 matlab or OpenCV 对lena 图片进行边缘提取
- Web后端的基础知识
- 东野圭吾《沉默的巡游》简单书评(含剧透)
- 【产品经理】产品经理进阶之路(六):互联网思维详解
- java实现第四届蓝桥杯猜年龄
- 腾讯3轮面试都问了Android事件分发,最强技术实现
- 方舟生存服务器没有响应怎么办,方舟生存进化搜服务器闪退怎么办? Fata error临时解决办法一览...
- [附源码]JAVA毕业设计景区门票系统(系统+LW)
- android 组件透明,万能小组件透明小组件-万能小组件透明背景设置v1.0.0 安卓版_永辉资源网...
- php微信公众号测试账号密码,微信公众号测试账号配置失败竟然是因为一个字符...
- 好的数据库面试题集合
热门文章
- 人月神话贯彻执行_《人月神话》读后感与读书笔记
- 计算机网络联网方法实验报告,计算机网络技术》实验报告.doc
- 2021 ICPC Asia Jinan Regional Contest-J Determinant(取模高斯消元)
- html2canvas在手机不行,html2canvas - 在iOS设备上崩溃
- 文本预处理及keras的学习
- 单点登录有关跨域的点
- mybaties中通用mapper的基本使用
- echarts 报错问题 is null 或者未定义等问题
- Python 爬虫的工具列表
- OpenBSD 现已支持 USB 3.0