download.js参数(download可以返回错误信息吗)
一、Node.js**安装与环境变量配置
**: Download| Node.js(nodejs.org)
1、至此Node.js已经安装完成,可以先进行下简单的测试安装是否成功了,后面还要进行环境配;
2、在键盘按下【win+R】键,输入cmd,然后回车,打开cmd窗口;
3、安装完后的目录如下图所示;
4、此处说明下:新版的Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js依赖的包进行管理,也可以理解为用来安装/卸载Node.js需要装的东西。
5、输入 node-v显示node.js的版本,说明node安装成功;输入 npm-v显示npm`显示npm的版本,说明npm安装成功。
1、说明:这里的环境配置主要配置的是npm安装的全局模块所在的路径,以及缓存cache的路径,之所以要配置,是因为以后在执行类似:npm install express [-g](后面的可选参数-g,g代表global全局安装的意思)的安装语句时,会将安装的模块安装到【C:\Users\用户名\AppData\Roaming\npm】路径中,占C盘空间
2、例如:我希望将全模块所在路径和缓存路径放在我node.js安装的文件夹中,则在我安装的文件夹【D:\Develop\nodejs】下创建两个文件夹【node_global】及【node_cache】。
npm config set prefix"D:\Develop\nodejs\node_global"
npm config set cache"D:\Develop\nodejs\node_cache"
1、接下来设置环境变量,关闭cmd窗口,“我的电脑”-右键-“属性”-“高级系统设置”-“高级”-“环境变量”;
2、进入环境变量对话框,在【系统变量】下新建【NODE_PATH】,输入【D:\Develop\nodejs\node_global\node_modules】,将【用户变量】下的【Path】修改为【D:\Develop\nodejs\node_global】。
1、配置完后,安装个module测试下,我们就安装常用的express模块,打开cmd窗口
2、输入如下命令进行模块的全局安装:
npm install express-g#-g是全局安装的意思
二、nodejsres***download可以返回错误信息吗
1、nodejsres.download可以返回错误信息。
2、在Node.js中,res.download方法用于向客户端发送文件。如果文件不存在或者无法访问,该方**返回一个错误。可以通过在回调函数中处理错误来返回错误信息。因此nodejsres.download可以返回错误信息。
3、除了在回调函数中处理错误之外,还可以使用try-catch语句来捕获错误并返回错误信息。
三、NW.js是什么如何使用
本文主要和大家分享NW.js是什么如何使用?NW.js(原名 node-webkit)是一个基于 Chromium和 node.js的应用运行时,通过它可以用 HTML和 JavaScript编写原生应用程序。它还允许您从 DOM调用 Node.js的模块,实现了一个用所有 Web技术来写原生应用程序的新的开发模式。
(1)以网络流行的技术编写原生应用程序的新方法
(2)基于HTML5, CSS3, JS and WebGL而编写
(3)完全支持nodejs所有api及第三方模块
(4)可以使用DOM直接调用nodejs模块
(6)支持运行环境包括32位和64位的Window、Linux和Mac OS
1.** NW.js(**:)
这里面normal这个算是运行时吧,sdk那个是一些工具箱,建议都下下来~
2.** Enigma Virtual Box(**:)
"description":"使用nw.js封装的一个微信公众号菜单编辑器App",
"keywords": ["微信","菜单编辑器" ],
"icon":"app/static/img/weixin_logo.jpg",
"chromium-args":"-allow-file-access-from-files"
}title:字符串,设置默认 title。
toolbar: bool值。是否显示导航栏。
position:字符串。窗口打开时的位置,可以设置为“null”、“center”或者“mouse”。
min_width/min_height:窗口的小值。
max_width/max_height:窗口显示的大值。
resizable: bool值。是否允许调整窗口大小。
always-on-top: bool值。窗口置顶。
fullscreen: bool值。是否全屏显示。
show_in_taskbar:是否在任务栏显示图标。
frame: bool值。如果设置为 false,程序将无边框显示。
"chromium-args":"-allow-file-access-from-files"相当于给谷歌浏览器添加启动参数一样,这行代码允许angularjs直接访问本地json文件。
将html项目压缩成zip,并改名为nw,输入以下命令
copy/b nw.exe+app.nw firstApp.exe四、打发包发布
打开 Enigma Virtual Box程序(enigmavb.exe),界面应该是这样的:
然后在 Enter Input File Name处选择上一步生成的 test.exe文件,Enter Output Name可以默认;
之后再点击下面的 Add按钮,将 nwjs文件夹(名称不一定是 nwjs,就是开始第一步 NW.js环境的那个文件夹)下除 nw.exe和 test.nw以及 test.exe之外的所有文件加载上,然后点击 Process,等待执行成功即可,这时候会在相应的路径下生成一个新的.exe文件(我们暂且叫做 newtest.exe),此时的 newtest.exe文件即可在任意的 Windows环境下运行了,你可以拷贝给你的小伙伴去 Show一下。
1.如果只希望当前应用获取焦点才执行快捷键,看看这个库用js设置快捷键
var gui= require('nw.gui');
alert("全局快捷键"+ this.key+"按下");
var shortcut= new gui.Shortcut(option);
gui.App.registerGlobalHotKey(shortcut);
//解除注册,在应用结束的时候执行
gui.App.unregisterGlobalHotKey(shortcut);2.nw.js不能对页面多次刷新,各种不正常,这是由于刷新页面后重新加载js文件对变量重新赋值引起的bug。解决方案
<title>nw.js实现文件读写</title>
<input id="readFile" type="file">读取文件</input>
<!--默认文件名为filename.html-->
<input id="writeFile" nwsaveas="filename.html" type="file">保存文件</input>
var chooser= document.querySelector('#readFile');
chooser.addEventListener("change", function(evt){
var filePath= this.value.toString();
document.querySelector("p").innerHTML="读取文件从"+ filePath;
fs.readFile(filePath, function(err, data){
layer.msg("读取文件失败!:"+ err.message);
chooser= document.querySelector('#writeFile');
chooser.addEventListener("change", function(evt){
var filePath= this.value.toString();
document.querySelector("p").innerHTML="写入文件到:"+ filePath;
fs.writeFile(filePath,"Hello!\n", function(err){
</html>3.使用nwjs的'fs'直接保存cancas为本地图片,在网上找到的方法都是弹出选择框保存,但我需要直接保存图片到指定路径,不能弹出对话框让用户选择。kailniris给了一个解决方案,可行,代码如下:
var fs= require('fs');
var c= document.getElementById("myCanvas");
<canvas id="myCanvas" width="200" height="100" style="border:1px solid#000000;">
base64Data= c.toDataURL("image/png").replace(/^data:image\/png;base64,/,"")
fs.writeFile("c:/Dev/test.png", base64Data,'base64', function(err){
return res.json({'status':'success'});
});用html2canvas把html页面转换为图片,再把图片保存到本地。贴一下代码(需要导入html2canvas.js和jquery):
var filePath= templateDir+ filename+'.html';
var editerDocument= window.editor.edit.iframe.get().contentWindow.document;
html2canvas(editerDocument.body,{
onrendered: function(canvas){
var base64Data= canvas.toDataURL("image/png").replace(/^data:image\/png;base64,/,"")
fs.writeFile(templateDir+ filename+'.png', base64Data,'base64', function(err){
$('#model_template_name').modal("hide");
layer.msg("模板已保存为"+ filename);
});4.在app.js里引用Node内置模块
$scope.fs= require('fs');
$scope.readConfig= function(){
var configStr=$scope.fs.readFileSync(config.weixin.path,'utf8');
var obj= eval('('+ configStr+')');
$scope.weixin.appid= obj.appid;
$scope.weixin.appsecret= obj.appsecret;
$scope.weixin.qrcodeurl= obj.qrcodeurl;
alert("读取微信配置文件失败");
$scope.writeConfig= function(){
var configStr= JSON.stringify($scope.weixin);
$scope.fs.writeFileSync(config.weixin.path, configStr,{encoding:'utf8'});
alert("写入微信配置文件失败");
$scope.wechatApi= require('wechat-api');
var api= new$scope.wechatApi($scope.weixin.appid,$scope.weixin.appsecret);
api.getMenu(function(err, result){
$scope.$apply();//需要手动刷新