nw.js (node-webkit) 中使用dojo框架, 如果已经写好了dojo页面,不想重写就可以跨平台?(感觉我很牛叉,竟然搞起来了,佩服我自己)

如果写了一个web页面,想在各种平台上面(Android/IOS/Mac OS/Windows/Linux)跑起来怎么办?

还要重新自己写一套客户端吗? NO!

nw.js帮你跨平台。 但如果已经写好了页面,还要重新再写吗? NO!

所以别的框架我就没试,只试了dojo,如果你用dojo实现好了一套东西,那么就可以做成手机APP或者桌面APP了。

NW 版本(我自己下载的在官网):

  nwjs-sdk-v0.52.2-linux-x64

Dojo 版本:

  dojo-release-1.15.0

我都是用的比较新的,套路就是这个套路,移植应该都一样。

下面是我的目录结构,package.json是我新加的,就是给nw程序使用的。

用nw根据package.json里面的配置来启动我的index.html。 这个index.html就是页面入口,页面中使用dojo写的。

很简单, 把index.html起来就好了。

package.json内容如下:

{
  "name": "test dojo with nw",
  "main": "index.html",
  "version":"0.1.0",
  "description":"test website",
  "nodejs":true,
  "node-main":"js/node_server.js"
}

main 代表页面入口, node-main可以不写,如果你写上就会加载你的node js代码。

然后:

把命令放进脚本里面了,省的每次都输入。   ../node_webkit/nw64/nw 是可以执行程序,后面跟的是当前目录,nw程序会找当前路径下的package.json文件,然后去加载配置的main对应的文件。

是不是很简单? 可能还有坑。往下看看。

index.html文件内容:

<!DOCTYPE html>
<html>
    <head>
        <title>HONG CHEN</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <link rel="stylesheet" href="js/DOJO/dijit/themes/claro/claro.css">
        <link rel="stylesheet" href="js/DOJO/dijit/themes/claro/document.css">
        <link rel="stylesheet" href="js/DOJO/dijit/themes/tundra/tundra.css">
        <link rel="stylesheet" href="js/DOJO/dojo/resources/dojo.css">
        <link rel="stylesheet" href="css/style.css">
        <script type="text/javascript" src="js/libs/require.js" data-main="js/main.js"> </script>
    </head>
    <body class="claro">
    </body>
</html>

<script type="text/javascript" src="js/libs/require.js" data-main="js/main.js"> </script>

这一行很重要,对你来说重不重要我就不知道了,我发现没有这个就会有问题,我的main.js加载不出来,也许跟我在main.js中加载dojo的lib有关系,嗯,也许是。

require.js是我从dojo源码里面拷贝出来的,或者你也可以从别的地方下载,这个文件网上有。

dojo里面如果你使用了require,那么可能需要修改,因为nw里面可以直接使用node.js库,而node.js的模块就是通过require加载进来的,而node.js的require和dojo的require可不是同一个,因此有冲突。

加载了require.js后,就会有requirejs来加载dojo的库, require加载node.js的模块。

如果你的页面使用dojo的require加载的js文件,那么要把require修改成requirejs。

我的index.html是加载js/main.js文件,给你看看我的main.js内容:

用requirejs加载,我的dojo库都定义在DOJOLIBS对象里面了,所以我直接使用了DOJOLIBS对象里面的值,反正都是dojo或者dijit下面的js文件。

红框很重要,一定要改, dojo/dijit/dojox都是nw全局变量,所以用nw启动后原来的不存在了,所以要使用:

      if(typeof nw === 'object') {
        dojo = nw.global.dojo;
        dijit = nw.global.dijit;
        dojox = nw.global.dojox;
      }

再启动一下,是不是就可以起来了?反正我起来了。

要是有些dojo文件找不到,可能需要你自己编译nw吧?我怀疑nw自己使用的node.js没你需要的js文件。

按这个方式,我的dojo页面起来了。
在linux上就是一个小窗口,不再是通过浏览器打开了。然后试试使用node.js模块:
 

var os = require("os");

console.log(os.platform());

是不是成功使用node.js了?反正我成功了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值