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 小结的更多相关文章

  1. Nodejs:Node.js模块机制小结

    今天读了<深入浅出Nodejs>的第二章:模块机制.现在做一个简单的小结. 序:模块机制大致从这几个部分来讲:JS模块机制的由来.CommonJS AMD CMD.Node模块机制和包和n ...

  2. requirejs 小结

    1,“生搬硬套”-----js依赖的写法,依赖关系如这里的嵌套关系: /** * 模块化加载,注意各个js文件的依赖关系(嵌套) */ require(["jquery"], fu ...

  3. 项目:Vue+node+后台管理项目小结

    序:本文主要分两块说:项目机制,具体用到的知识块. 1. 项目机制 项目的原型以vue-cli为原型,进行项目的初步构建.项目以node.js服务和webpack打包机制为依托,将.vue文件打包为浏 ...

  4. Node webkit启动最大化窗口

    <!DOCTYPE html> <html> <head>     </head> <body>     <p style=" ...

  5. node webkit(nw.js) 设置自动更新

    原理:把更新的文件放在服务器上,设置一个客户端版本号,每次打开客户端的时候,通过接口获取服务器上的版本,如果高于本地的版本就下载服务器上的代码,低于或等于就不更新 <script> var ...

  6. node webkit (nw.js) 无法调试的结局方案之一

    之前做过nw项目,当时主要内容是由别人做的!过后回到家中,自己研究了下这方面.结果发现我自己写的nw 客户端不可以调试!在网上各种找办法,没找到,深感绝望,突然看到 (https://github.c ...

  7. electron利用nodejs+移动端技术跨平台桌面应用开发框架——记录下,类似node webkit!

    Build cross platform desktop appswith JavaScript, HTML, and CSS Electron: 1.6.8Node: 7.4.0Chromium:  ...

  8. 使用requirejs+vue 打造 无需编译发布便捷修改调整的模块开发方案 (一)

    前言 不知道大家有没有这种感觉,现在流行的很多前端技术,基本上都基于webpack编译,当然不是说这种方案不好,在标准的开发流程运行中,这种方式其实也挺不错,管理方便,代码统一. 痛点:项目不是单独针 ...

  9. 10个常见的Node.js面试题

    如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对Node.js的掌握程度. 本文就为你罗列了10个常见的Node.js面试题,分别考察了Node.js编程相关的几个主要方面. ...

随机推荐

  1. tp框架之Model类与命名空间

    1.获取系统常量信息 public function shuchu() { var_dump(get_defined_constants()); } 2.跨控制器或跨模块调用 function dia ...

  2. Java小知识--length,length(),size()方法详细介绍

    Java中length,length(),size()区别 length属性:用于获取数组长度. eg: int ar[] = new int{1,2,3} /** * 数组用length属性取得长度 ...

  3. 【Java EE 学习 33 下】【validate表单验证插件】

    一.validate 1.官方网站:http://jqueryvalidation.org/ 2.文档说明:http://jqueryvalidation.org/documentation/ 3.j ...

  4. MyBatis学习(四)MyBatis和Spring整合

    MyBatis和Spring整合 思路 1.让spring管理SqlSessionFactory 2.让spring管理mapper对象和dao. 使用spring和mybatis整合开发mapper ...

  5. C语言中字符串结束符'\0'

    转自:http://www.cnblogs.com/kaituorensheng/archive/2013/12/09/3464462.html 本质 '\0'就是8位的00000000,因为字符类型 ...

  6. tftp服务器的搭建

    基于 红帽6的tftp搭建,当然其他系统搭建方法也大致一样 #mount /dev/cdrom /mnt/           挂载安装光盘  不同光盘挂载用 fdisk -l  查看光盘 #rpm ...

  7. 使用samba实现linux与windows共享(测试成功)

    samba服务器搭建    实现linux与windows文件共享有很多种方法,诸如wpc,vmtools等,今天我来介绍我在rehat系统中实验成功并且现在在用的的方法,直接给出操作步骤:     ...

  8. Javascript for循环指定锚点跳转

    在某些使用多层嵌套for循环的场合里 会用到break和continue来中途跳转循环 break是跳出整个循环 continue是跳出当前循环,继续下次循环 而多层for循环嵌套里使用这两个关键字默 ...

  9. [代码]label增加删除线

    UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(20, 60, 100, 30)];    [self.view addSubvi ...

  10. 一些简单编程练习题P【持续更新】

    Q1.写程序将“Hello World”打印到屏幕. A1. public class Test { public static void main(String[] args) { System.o ...