博客 / 詳情

返回

微信小程序 絕對路徑 require

根據 微信小程序開放文檔

參數 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 直接就可以 支持絕對路徑了

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.