# preload.js

当你在`plugin.json`中配置了`preload`属性，将载入对应的预加载脚本。

在传统的web开发中，所有的javascript脚本都在浏览器沙盒中运行，权限被严格限制，所能实现的功能非常有限。

通过`preload.js`能够帮你突破沙盒限制，进入一个崭新的JavaScript世界。

`preload.js` 是一个特殊且单独的文件，不需要与其他业务代码编译在一起，在此文件中可以访问`nodejs`、`electron`、`uTools`提供的api，并挂载到`window`对象中，你其他的普通javascript代码就可以访问这些 api。

     // 开发者可以暴露自定义API供后加载脚本使用

        // preload.js 中使用nodejs
        const { readFileSync } = require('fs')

        window.readConfig = function () {
          const data = readFileSync('./config.json')
          return data
        }

        // index.html 后加载的内容可以使用window.readConfig()方法，但不能使用Node.js特性
        console.log(window.readConfig()) // 正常执行
        console.log(readFileSync('./config.json')) // 报错

通过这种机制可以获得强大的底层能力，配合html、css丰富的表现力，你完全可以按你理想中的样子去设计程序。

但是，更强大的能力如果不受约束就会伴随着更大风险，在使用预加载脚本时，应该时刻注意只提供必要且最小权限的api供后加载脚本使用。

（如果你想把插件提交到utools插件中心供其他用户下载使用，`preload.js`必须是明文代码，且精简清晰可读。）