简介
jxa-browserify 是一个能够在 Node.js 中运行 JXA(JavaScript for Automation)脚本的 NPM 包。JXA 是一种使用 JavaScript 脚本编写 Mac 应用程序的技术,但是它不能很好地支持 Node.js 环境,因此 jxa-browserify 应运而生。通过 jxa-browserify,我们可以在 Node.js 中使用 JXA 并调用 macOS 的 API。
安装
使用 npm 进行安装:
npm install jxa-browserify
使用
基本使用
引入 jxa-browserify:
const jxa = require('jxa-browserify');
使用 jxa.run() 方法并将 JXA 脚本作为参数传入即可执行脚本:
jxa.run(() => { // 在这里编写 JXA 脚本 });
如果在脚本中想要使用 Node.js 提供的方法,需要在脚本中引入 Node.js 的全局对象 global 并使用它来调用 Node.js 的 API:
jxa.run(() => { const { global } = this; const fs = global.require('fs'); // 引入 Node.js 的 fs 模块 const result = fs.readFileSync('./text.txt'); console.log(result.toString()); });
传递参数
可以通过 jxa.run() 方法的第二个参数传递参数给 JXA 脚本:
jxa.run((message) => { const app = Application.currentApplication(); // 引入应用程序工具箱 app.includeStandardAdditions = true; app.displayNotification(message); // 显示通知 }, 'Hello from Node.js!');
回调函数
可以将一个 Node.js 回调函数作为参数传入 JXA 脚本,并在脚本中调用回调函数:
-- -------------------- ---- ------- -------- ----------------- - -------------------- -------- ------------- - ------------------ -- - ----- --- - --------------------------------- -- --------- ---------------------------- - ----- --------------- ---- ------- -- ------ -- ----------
ES6 模块
JXA 不支持 ES6 模块,因此我们需要使用 Babel 将 ES6 模块转化为 CommonJS 模块,然后再传入 jxa-browserify:
引入 jxa-browserify:
const jxa = require('jxa-browserify');
安装 Babel 依赖:
npm install @babel/core @babel/preset-env babelify
在代码中使用 babelify 转化 JavaScript 代码:
-- -------------------- ---- ------- ----- -------- - ----------------------------------------- ----- --- - -------------------------- ----- - ---- - - ----------------------- - -------- - --------------------- - -------- - ----- ---------- -- --- -- --- ---------- -- - ----------- -- ---- ---
示例代码
下面是一个在 JXA 中使用 Node.js 的示例:
-- -------------------- ---- ------- ----- --- - -------------------------- ---------- -- - ----- - ------ - - ----- ----- ---- - ----------------------- ----- -- - --------------------- ----- -- - --------------------- ----- -------- - ----------------------- ------------- ----- ------- - ------ -------- -------------------------- -------- --------- ----- --- - --------------------------------- -- --------- ---------------------------- - ----- ----------------------------- ----------- ---
总结
jxa-browserify 是一个方便在 Node.js 中使用 JXA 的 NPM 包。通过 jxa-browserify,我们可以在 Node.js 中使用 macOS 的 API,不仅可以提高开发效率,也可以实现很多之前无法在 Node.js 中实现的功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005687a81e8991b448e470e