根据 微信小程序开放文档
参数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 直接就可以 支持绝对路径了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。