node-webkit 使用requirejs 小结
1. node-webkit 启动页使用requrejs
将webapp中的require改为requirejs,因为requirejs本来就应该用requirejs的,require只是requirejs的一个别名。
requirejs(["angular","script/app","jquery"],function(angular,app){
angular.element().ready(function(){
angular.resumeBootstrap([app["name"]]);
});
});;
2. node-webkit前端 requirejs模块中调用node-wbkit的原生api:
nw.gui 是node-webkit native api的模块。
引入 nw.gui 可以通过var gui = require(‘nw.gui’); || global.window.nwDispatcher.requireNwGui()两种方法
因为nw.gui并不是nodejs 的内置的全局模块,使用require(‘nw.gui’)方法必须在启动页中的script标签中执行, 所以如果想做到在一个requrirjs的amd模块或者node-modules下的node文件中调用nw.gui只能使用global.window.nwDispatcher.requireNwGui()(详见 https://github.com/rogerwang/node-webkit/issues/707)
demo :调用node-webkit api 生成原生菜单 ,窗体最小化
define(function(){
var winMenuCtrl=["$scope","$element",function($scope, element){
gui=global.window.nwDispatcher.requireNwGui() ;
var win = gui.Window.get();
$scope.minimize=function(){
win.minimize();
win.on('minimize', function () {
console.log("窗口最小化")
});
} /* 窗口最小化 */
creatMenu=function(){
var menubar = new gui.Menu({ type: 'menubar' }); /*创建一级菜单*/
var sub1 = new gui.Menu(); /*创建二级菜单*/
sub1.append(new gui.MenuItem({
label: '子菜单1',
click: function() {
var element = document.createElement('div');
element.appendChild(document.createTextNode('Test 1'));
document.body.appendChild(element);
}
}));/* 向二级菜单添加menuitem */
sub1.append(new gui.MenuItem({
label: '子菜单2',
click: function() {
var element = document.createElement('div');
element.appendChild(document.createTextNode('Test 1'));
document.body.appendChild(element);
}
}));/* 向二级菜单添加menuitem */
menubar.append(new gui.MenuItem({ label: '菜单1', submenu: sub1 })); /* 向一级菜单添加menuitem。*/
var win = gui.Window.get();
win.menu = menubar; /* 将一级菜单指定问窗口菜单 */
}
creatMenu()/* 生成原生菜单 */
}]
return winMenuCtrl
})
3.node-webkit 前端requrejs 模块中调用nodejs 模块
解决办法: 保存nodejs 的require方法到全局变量 (在requirejs 加载之前)
window.requireNode = window.require;
在requirejs 模块中使用window.requireNode加载nodejs的module,之所以没有改变requirejs
一方面node是最先加载在webview启动之前就加载完成了, 而requiejs是页面启动的时候才加载。
而另一方面 为了保证web端 与客户端代码一直 改动最小的原则
demo :amd模块中调用nodejs 文件系统
define(function(require){
var d3TestCtrl=["$scope","$element",function($scope, element){
var d3=require("D3")
requireNode ('fs').readdir('D:/', function (err, files) {
if (err) {
document.write(err);
} else {
for (var i = 0; i < files.length; ++i) {
var div = document.createElement('div');
div.className = "item";
var content = document.createTextNode(files[i]);
div.appendChild(content);
element[0].appendChild(div);
div.onclick = function () {
}
}
}
})
}]
return d3TestCtrl
})
node-webkit 使用requirejs 小结的更多相关文章
- Nodejs:Node.js模块机制小结
今天读了<深入浅出Nodejs>的第二章:模块机制.现在做一个简单的小结. 序:模块机制大致从这几个部分来讲:JS模块机制的由来.CommonJS AMD CMD.Node模块机制和包和n ...
- requirejs 小结
1,“生搬硬套”-----js依赖的写法,依赖关系如这里的嵌套关系: /** * 模块化加载,注意各个js文件的依赖关系(嵌套) */ require(["jquery"], fu ...
- 项目:Vue+node+后台管理项目小结
序:本文主要分两块说:项目机制,具体用到的知识块. 1. 项目机制 项目的原型以vue-cli为原型,进行项目的初步构建.项目以node.js服务和webpack打包机制为依托,将.vue文件打包为浏 ...
- Node webkit启动最大化窗口
<!DOCTYPE html> <html> <head> </head> <body> <p style=" ...
- node webkit(nw.js) 设置自动更新
原理:把更新的文件放在服务器上,设置一个客户端版本号,每次打开客户端的时候,通过接口获取服务器上的版本,如果高于本地的版本就下载服务器上的代码,低于或等于就不更新 <script> var ...
- node webkit (nw.js) 无法调试的结局方案之一
之前做过nw项目,当时主要内容是由别人做的!过后回到家中,自己研究了下这方面.结果发现我自己写的nw 客户端不可以调试!在网上各种找办法,没找到,深感绝望,突然看到 (https://github.c ...
- electron利用nodejs+移动端技术跨平台桌面应用开发框架——记录下,类似node webkit!
Build cross platform desktop appswith JavaScript, HTML, and CSS Electron: 1.6.8Node: 7.4.0Chromium: ...
- 使用requirejs+vue 打造 无需编译发布便捷修改调整的模块开发方案 (一)
前言 不知道大家有没有这种感觉,现在流行的很多前端技术,基本上都基于webpack编译,当然不是说这种方案不好,在标准的开发流程运行中,这种方式其实也挺不错,管理方便,代码统一. 痛点:项目不是单独针 ...
- 10个常见的Node.js面试题
如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对Node.js的掌握程度. 本文就为你罗列了10个常见的Node.js面试题,分别考察了Node.js编程相关的几个主要方面. ...
随机推荐
- UTC与GMT时间
整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated).UTC与格 ...
- October 22nd Week 43rd Saturday, 2016
Beware the barrenness of a busy life. 当心忙碌的生活荒芜了人生. Recently I was busy in debugging an equipment, I ...
- Pfile VS Spfile (MOS Note 249664.1)
============================================================================== Until Oracle 8i DBAs ...
- linux 学习 day1
- 前台json 的一些 处理 (转)
JS解析json数据并将json字符串转化为数组的实现方法 转自(http://www.jb51.net/article/32795.htm) <!DOCTYPE HTML PUBLIC &qu ...
- dbms_output.put_line长度限制问题
dbms_output.put_line长度限制问题 对于10g以上版本(包括10g), dbms_output.put_line的最大长度限制是32767. 如果报错buffer overflow, ...
- 【NOIP考前模拟赛】纯数学方法推导——旅行者问题
一.写在前面 这题似乎是一道原创题目(不是博主原创),所以并不能在任何OJ上评测,博主在网盘上上传了数据(网盘地址:http://pan.baidu.com/s/1mibdMXi),诸位看官需者自取. ...
- ZeroMQ接口函数之 :zmq_proxy – 开始ZMQ内置代理
ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-proxy zmq_proxy(3) ØMQ Manual - ØMQ/4.1.0 Nam ...
- ZeroMQ接口函数之 :zmq_ipc – ZMQ本地进程间通信传输协议
ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ——————————————————————————————————— ...
- 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...