node-webkit 使用requirejs 小結

1. node-webkit 啓動頁使用requrejsjavascript

將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:java

nw.gui  是node-webkit native api的模塊。node

引入 nw.gui 能夠經過var gui = require(‘nw.gui’); || global.window.nwDispatcher.requireNwGui()兩種方法jquery

由於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)git

demo :調用node-webkit api  生成原生菜單 ,窗體最小化github

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 模塊web

解決辦法: 保存nodejs 的require方法到全局變量 (在requirejs 加載以前)    api

window.requireNode = window.require;

在requirejs 模塊中使用window.requireNode加載nodejs的module,之因此沒有改變requirejs app

一方面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
})
相關文章
相關標籤/搜索