根據 微信小程序開放文檔
參數path類型string需要引入模塊文件相對於當前文件的
相對路徑,或npm模塊名,或npm模塊路徑。不支持絕對路徑
總有一些公共js代碼,需要放在一個統一的目錄下,大部分情況我們這樣放
lib/base64.js
lib/moment.js
lib/api.js
合理組織過的 page 路徑一般都不止一層,然後 page 裏的 require
require('../../../lib/moment.js');
require('../../../lib/api.js');
WTF,這簡直逼死強迫症,沒強迫症看着也嫌棄
不嫌棄的請直接窗口右上角按 X
嫌棄完了,實在覺得不能忍,尋求解決辦法
最後找到的方法,不能説優雅,但是出乎意料的 簡單 暴力 直接 有效
只需要在 app.js 中增加 1 行代碼,
App({
// 真的就這一行
require : function($uri){return require($uri)},
onLaunch : function(){
}
});
然後其他任何路徑下的 js 如下
// pages/admin/order/list/page.js
const app = getApp(); //
// 除了不是 / 開頭,這真的就是個絕對路徑,讓那些 ../../.. 見鬼去吧
const Api = app.require('lib/api.js');
Page({
onLoad : function(){
}
});
文章以外:微信其實可以調整一下,默認有個 app.require 的類似實現
require 的 uri 是 / 開頭的,內部使用 app.require
這樣 require 直接就可以 支持絕對路徑了