首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NW.js构建跨平台桌面应用(3)-利用Node.js

Node.js常用来构建高并发的C/S应用,将这种模式移植到NW.js程序中虽然可行且费不了什么功夫,但仅仅这样做并不能发挥出平台所有的潜力;要知道NW.js允许直接在DOM中和Node.js交互,而这将大大加快程序的运行和简化开发...global对象 NW.js中的global对象除了Node.js中的作用,还能使用DOM,这样就提供了一个 在窗口和Node.js上下文中共享对象 的途径;此外,一旦window对象被创建,所有global...); //foo 在global顶端对象中指定了变量后,引用时可以省略global关键字 一些DOM操作不能在Node.js上下文中运行,比如window.openDatabase和nw.gui 不要过度利用...process.version['NW.js'] process.version['chromium'] process.mainModule //获得起始页或起始模块(由配置文件中的main或node-main...模块中使用的 __dirname,获得当前模块绝对路径 也可封装 __dirname 以供html使用: //根目录下的util.js exports.dirname = __dirname;//index.html

2.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

NW.js构建跨平台桌面应用(2)-原生界面API

而前面提到的两者,要么无法访问GUI,要么受限于API边界,均无法提供 NW.js Native UI APIs 则在其他JS层的顶部提供了这些完整的功能 1.1 获取nw实例 旧版本中可以用 var...取得其引用,但更方便的方法是使用App中的属性 var manifestData = nw.App.manifest; alert(manifestData.name); 2.4 关闭应用 如果以NW.js...Window API - 操作NW.js窗口 在NW.js中,Window API 只不过是对DOM中window对象的一层包装,很多(并非所有)方法和属性继承了后者的用法,同时window对象也是 Node.js...': 'path/to/js', //在文档loaded前注入的脚本 'inject-js-end': 'path/to/js' //在文档unloaded前注入的脚本 }); 优化窗口显示时机...= function() { nw.Window.get().show(); } 原始的window对象 开头提过:“在NW.js中,Window API 只不过是对DOM中window对象的一层包装

6.5K40

NW.js构建跨平台桌面应用(4)-数据持久化

中仅保存极少量信息且会过期),数据持久化(Data Persistence)是本地应用开发中的常见需求,通俗的讲就是将瞬时数据(比如内存中的数据,断电即失效)保存为持久数据(比如写入数据库中长久保存); 由于NW.js...的特性,可供选择的本地持久化方案非常丰富,既可以依赖于Node.js直接使用NeDB、LowDB等第三方数据库方案,也可以使用HTML5及其相关标准中提供的WebSQL、WebStorage、IndexedDB...直接存储数据到本地文件 正如之前的文章提到过的,NW.js提供了App.dataPath来访问系统的应用数据目录, 可以利用其方便的存储应用配置文件等 不同平台上的具体指向: Win: $LOCALAPPDATA...}; }, 2000); }; 4.3 完整接口文档 https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API 4.4 第三方封装实现...) }); db.get('mittens').then(function (doc) { return db.remove(doc); }); https://github.com/nwjs/nw.js

1.9K20

基于发布-订阅的原生 JS 插件封装

用原生 JS 封装一个动画插件。效果如下: ? 这个飞驰的小球看起来是不是特有灵性呢?没错,它就是用原生JS实现的。 接下来,就让我们深入细节,体会其中的奥秘。...一、需求分析 封装一个插件,将小球的 DOM 对象作为参数传入,使得小球在鼠标按下和放开后能够运动,在水平方向做匀减速直线运动,初速度为鼠标移开瞬间的速度,在竖直方向的运动类似于自由落体运动。...curT'].forEach(item => { this[item] = null; }); //为按下鼠标绑定事件,事件函数一定要绑定this,在封装过程中...在这里我并不是简单讲讲效果的实现、贴贴代码就过去了,而是带你体验了封装插件的整个过程。有了发布-订阅的场景,理解这个设计思想就更加容易了。...回过头看,比如 DOM2 的事件池机制,vue 的生命周期钩子等等,你就会明白它们为什么要这么设计,原理上和这次封装没有区别,这样一想,很多东西就更加清楚了。

3.1K20
领券