infrastructure.html 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>镜像站@Layui 底层方法</title>
  6. <meta name="renderer" content="webkit">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  9. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  10. <meta name="apple-mobile-web-app-capable" content="yes">
  11. <meta name="format-detection" content="telephone=no">
  12. <script>
  13. ;!function(){self!==parent&&(location.href="http://www.baidu.com/")}();
  14. </script>
  15. <link rel="stylesheet" href="/public/layui/dist/css/layui.css" tppabs="http://res.layui.com/layui/dist/css/layui.css?t=1632428048355" media="all">
  16. <link rel="stylesheet" href="/public/static/css/global.css" tppabs="http://res.layui.com/static/css/global.css?t=1632428048355-19" media="all">
  17. </head>
  18. <body>
  19. <div class="layui-header header header-doc" autumn>
  20. <div class="layui-container">
  21. <a class="logo" href="../../index.html" tppabs="http://www.layui.com/">
  22. <img src="/public/static/images/layui/logo.png" tppabs="http://res.layui.com/static/images/layui/logo.png" alt="layui">
  23. </a>
  24. <div class="layui-form layui-hide-xs component" lay-filter="LAY-site-header-component"></div>
  25. <div class="layui-hide-xs site-notice"></div>
  26. <ul class="layui-nav" id="LAY_NAV_TOP">
  27. <li class="layui-nav-item layui-this">
  28. <a href="../index.html" tppabs="http://www.layui.com/doc/">文档</a>
  29. </li>
  30. <li class="layui-nav-item ">
  31. <a href="../../demo/index.html" tppabs="http://www.layui.com/demo/">示例</a>
  32. </li>
  33. <li class="layui-nav-item">
  34. <a href="javascript:;">
  35. <!--<span class="layui-badge-dot" style="left:0; right: auto; margin: -4px 0 0 5px;"></span>-->
  36. 周边
  37. </a>
  38. <dl class="layui-nav-child layui-nav-child-c">
  39. <dd class="layui-hide-sm layui-show-xs" lay-unselect>
  40. <a href="https://gitee.com/sentsin/layui/issues" target="_blank" rel="nofollow">问题反馈</a>
  41. <hr>
  42. </dd>
  43. <dd lay-unselect><a href="../../alone.html" tppabs="http://www.layui.com/alone.html" target="_blank" lay-unselect>独立组件</a></dd>
  44. <dd lay-unselect><a href="../../../fly.layui.com/extend/index.html" target="_blank">扩展组件</a></dd>
  45. </dl>
  46. </li>
  47. <li class="layui-nav-item layui-hide-xs">
  48. <a href="http://gitee.com/sentsin/layui/issues" target="_blank" rel="nofollow">反馈</a>
  49. </li>
  50. </ul>
  51. </div>
  52. </div>
  53. <!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
  54. <!--[if lt IE 9]>
  55. <script src="../../../other/html5shiv/r29/html5.min.js" tppabs="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
  56. <script src="../../../other/respond.js/1.4.2/respond.min.js" tppabs="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
  57. <![endif]-->
  58. <ul class="site-dir">
  59. <li><a href="#config"><cite>全局配置</cite><em>config</em></a></li>
  60. <li><a href="#define"><cite>定义模块</cite><em>define</em></a></li>
  61. <li><a href="#use"><cite>加载模块</cite><em>use</em></a></li>
  62. <li><a href="#link"><cite>动态加载 CSS</cite><em>link</em></a></li>
  63. <li><a href="#data"><cite>本地存储</cite><em>data</em></a></li>
  64. <li><a href="#device"><cite>浏览器信息</cite><em>device</em></a></li>
  65. <li><a href="#other"><cite>其它底层方法</cite> <span class="layui-badge-dot"></span></a></li>
  66. <li><a href="#third_party"><cite>第三方工具</cite></a></li>
  67. </ul>
  68. <div class="layui-container layui-row">
  69. <div class="layui-col-md3">
  70. <div class="layui-panel site-menu">
  71. <ul class="layui-menu layui-menu-lg">
  72. <li class="layui-menu-item-group" lay-options="{type: 'group', isAllowSpread: true}">
  73. <div class="layui-menu-body-title">
  74. 基础说明
  75. </div>
  76. <hr>
  77. <ul>
  78. <li class="">
  79. <div class="layui-menu-body-title">
  80. <a href="../index.html" tppabs="http://www.layui.com/doc/">
  81. <span>开始使用 </span>
  82. <span class="layui-font-12 layui-font-gray">Getting Started</span>
  83. </a>
  84. </div>
  85. </li>
  86. <li class="layui-menu-item-checked2">
  87. <div class="layui-menu-body-title">
  88. <a href="infrastructure.html" tppabs="http://www.layui.com/doc/base/infrastructure.html">
  89. <span>底层方法 </span>
  90. <span class="layui-font-12 layui-font-gray">基础支撑</span>
  91. </a>
  92. </div>
  93. </li>
  94. <li class="">
  95. <div class="layui-menu-body-title">
  96. <a href="element.html" tppabs="http://www.layui.com/doc/base/element.html">
  97. <span>页面元素 </span>
  98. <span class="layui-font-12 layui-font-gray">规范 公共类 属性</span>
  99. </a>
  100. </div>
  101. </li>
  102. <li class="">
  103. <div class="layui-menu-body-title">
  104. <a href="modules.html" tppabs="http://www.layui.com/doc/base/modules.html">
  105. <span>模块规范 </span>
  106. <span class="layui-font-12 layui-font-gray">使用 扩展</span>
  107. </a>
  108. </div>
  109. </li>
  110. <li class="">
  111. <div class="layui-menu-body-title">
  112. <a href="faq.html" tppabs="http://www.layui.com/doc/base/faq.html">
  113. <span>常见问题 </span>
  114. <span class="layui-font-12 layui-font-gray">FAQ</span>
  115. </a>
  116. </div>
  117. </li>
  118. <li class="">
  119. <div class="layui-menu-body-title">
  120. <a href="changelog.html" tppabs="http://www.layui.com/doc/base/changelog.html">
  121. <span>更新日志 </span>
  122. <span class="layui-font-12 layui-font-gray">changelog</span>
  123. <span class="layui-badge-dot"></span>
  124. </a>
  125. </div>
  126. </li>
  127. </ul>
  128. </li>
  129. <li class="layui-menu-item-group" lay-options="{type: 'group', isAllowSpread: true}">
  130. <div class="layui-menu-body-title">
  131. 页面元素
  132. </div>
  133. <hr>
  134. <ul>
  135. <li class="">
  136. <div class="layui-menu-body-title">
  137. <a href="../element/layout.html" tppabs="http://www.layui.com/doc/element/layout.html">
  138. <span>布局 </span>
  139. <span class="layui-font-12 layui-font-gray">栅格 后台管理布局</span>
  140. </a>
  141. </div>
  142. </li>
  143. <li class="">
  144. <div class="layui-menu-body-title">
  145. <a href="../element/color.html" tppabs="http://www.layui.com/doc/element/color.html">
  146. <span>颜色 </span>
  147. <span class="layui-font-12 layui-font-gray">主色调 颜色搭配</span>
  148. </a>
  149. </div>
  150. </li>
  151. <li class="">
  152. <div class="layui-menu-body-title">
  153. <a href="../element/icon.html" tppabs="http://www.layui.com/doc/element/icon.html">
  154. <span>图标 </span>
  155. <span class="layui-font-12 layui-font-gray">iconfont 字体图标</span>
  156. </a>
  157. </div>
  158. </li>
  159. <li class="">
  160. <div class="layui-menu-body-title">
  161. <a href="../element/anim.html" tppabs="http://www.layui.com/doc/element/anim.html">
  162. <span>动画 </span>
  163. <span class="layui-font-12 layui-font-gray">内置 CSS3 动画</span>
  164. </a>
  165. </div>
  166. </li>
  167. <li class="">
  168. <div class="layui-menu-body-title">
  169. <a href="../element/button.html" tppabs="http://www.layui.com/doc/element/button.html">
  170. <span>按钮 </span>
  171. <span class="layui-font-12 layui-font-gray">button</span>
  172. </a>
  173. </div>
  174. </li>
  175. <li class="">
  176. <div class="layui-menu-body-title">
  177. <a href="../element/form.html" tppabs="http://www.layui.com/doc/element/form.html">
  178. <span>表单 </span>
  179. <span class="layui-font-12 layui-font-gray">form 元素集合</span>
  180. </a>
  181. </div>
  182. </li>
  183. <li class="">
  184. <div class="layui-menu-body-title">
  185. <a href="../element/nav.html" tppabs="http://www.layui.com/doc/element/nav.html">
  186. <span>导航 </span>
  187. <span class="layui-font-12 layui-font-gray">nav 面包屑</span>
  188. </a>
  189. </div>
  190. </li>
  191. <li class="">
  192. <div class="layui-menu-body-title">
  193. <a href="../element/menu.html" tppabs="http://www.layui.com/doc/element/menu.html">
  194. <span>菜单 </span>
  195. <span class="layui-font-12 layui-font-gray">menu 基础菜单</span>
  196. <span class="layui-badge-dot"></span>
  197. </a>
  198. </div>
  199. </li>
  200. <li class="">
  201. <div class="layui-menu-body-title">
  202. <a href="../element/tab.html" tppabs="http://www.layui.com/doc/element/tab.html">
  203. <span>选项卡 </span>
  204. <span class="layui-font-12 layui-font-gray">Tabs 切换</span>
  205. </a>
  206. </div>
  207. </li>
  208. <li class="">
  209. <div class="layui-menu-body-title">
  210. <a href="../element/progress.html" tppabs="http://www.layui.com/doc/element/progress.html">
  211. <span>进度条 </span>
  212. <span class="layui-font-12 layui-font-gray">progress</span>
  213. </a>
  214. </div>
  215. </li>
  216. <li class="">
  217. <div class="layui-menu-body-title">
  218. <a href="../element/panel.html" tppabs="http://www.layui.com/doc/element/panel.html">
  219. <span>面板 </span>
  220. <span class="layui-font-12 layui-font-gray">panel 卡片 折叠</span>
  221. </a>
  222. </div>
  223. </li>
  224. <li class="">
  225. <div class="layui-menu-body-title">
  226. <a href="../element/table.html" tppabs="http://www.layui.com/doc/element/table.html">
  227. <span>表格 </span>
  228. <span class="layui-font-12 layui-font-gray">静态 table</span>
  229. </a>
  230. </div>
  231. </li>
  232. <li class="">
  233. <div class="layui-menu-body-title">
  234. <a href="../element/badge.html" tppabs="http://www.layui.com/doc/element/badge.html">
  235. <span>徽章 </span>
  236. <span class="layui-font-12 layui-font-gray">小圆点 小边框</span>
  237. </a>
  238. </div>
  239. </li>
  240. <li class="">
  241. <div class="layui-menu-body-title">
  242. <a href="../element/timeline.html" tppabs="http://www.layui.com/doc/element/timeline.html">
  243. <span>时间线 </span>
  244. <span class="layui-font-12 layui-font-gray">timeline</span>
  245. </a>
  246. </div>
  247. </li>
  248. <li class="">
  249. <div class="layui-menu-body-title">
  250. <a href="../element/auxiliar.html" tppabs="http://www.layui.com/doc/element/auxiliar.html">
  251. <span>辅助 </span>
  252. <span class="layui-font-12 layui-font-gray">引用 字段集 横线等</span>
  253. </a>
  254. </div>
  255. </li>
  256. </ul>
  257. </li>
  258. <li class="layui-menu-item-group" lay-options="{type: 'group', isAllowSpread: true}">
  259. <div class="layui-menu-body-title">
  260. 内置模块
  261. </div>
  262. <hr>
  263. <ul>
  264. <li class="">
  265. <div class="layui-menu-body-title">
  266. <a href="../modules/layer.html" tppabs="http://www.layui.com/doc/modules/layer.html">
  267. <span>弹出层 </span>
  268. <span class="layui-font-12 layui-font-gray">layer</span>
  269. </a>
  270. </div>
  271. </li>
  272. <li class="">
  273. <div class="layui-menu-body-title">
  274. <a href="../modules/laydate.html" tppabs="http://www.layui.com/doc/modules/laydate.html">
  275. <span>日期与时间选择 </span>
  276. <span class="layui-font-12 layui-font-gray">laydate</span>
  277. </a>
  278. </div>
  279. </li>
  280. <li class="">
  281. <div class="layui-menu-body-title">
  282. <a href="../modules/laypage.html" tppabs="http://www.layui.com/doc/modules/laypage.html">
  283. <span>分页 </span>
  284. <span class="layui-font-12 layui-font-gray">laypage</span>
  285. </a>
  286. </div>
  287. </li>
  288. <li class="">
  289. <div class="layui-menu-body-title">
  290. <a href="../modules/laytpl.html" tppabs="http://www.layui.com/doc/modules/laytpl.html">
  291. <span>模板引擎 </span>
  292. <span class="layui-font-12 layui-font-gray">laytpl</span>
  293. </a>
  294. </div>
  295. </li>
  296. <li class="">
  297. <div class="layui-menu-body-title">
  298. <a href="../modules/table.html" tppabs="http://www.layui.com/doc/modules/table.html">
  299. <span>数据表格 </span>
  300. <span class="layui-font-12 layui-font-gray">table</span>
  301. </a>
  302. </div>
  303. </li>
  304. <li class="">
  305. <div class="layui-menu-body-title">
  306. <a href="../modules/form.html" tppabs="http://www.layui.com/doc/modules/form.html">
  307. <span>表单 </span>
  308. <span class="layui-font-12 layui-font-gray">form</span>
  309. </a>
  310. </div>
  311. </li>
  312. <li class="">
  313. <div class="layui-menu-body-title">
  314. <a href="../modules/upload.html" tppabs="http://www.layui.com/doc/modules/upload.html">
  315. <span>文件上传 </span>
  316. <span class="layui-font-12 layui-font-gray">upload</span>
  317. </a>
  318. </div>
  319. </li>
  320. <li class="">
  321. <div class="layui-menu-body-title">
  322. <a href="../modules/dropdown.html" tppabs="http://www.layui.com/doc/modules/dropdown.html">
  323. <span>下拉菜单 </span>
  324. <span class="layui-font-12 layui-font-gray">dropdown</span>
  325. <span class="layui-badge-dot"></span>
  326. </a>
  327. </div>
  328. </li>
  329. <li class="">
  330. <div class="layui-menu-body-title">
  331. <a href="../modules/transfer.html" tppabs="http://www.layui.com/doc/modules/transfer.html">
  332. <span>穿梭框 </span>
  333. <span class="layui-font-12 layui-font-gray">transfer</span>
  334. </a>
  335. </div>
  336. </li>
  337. <li class="">
  338. <div class="layui-menu-body-title">
  339. <a href="../modules/tree.html" tppabs="http://www.layui.com/doc/modules/tree.html">
  340. <span>树形组件 </span>
  341. <span class="layui-font-12 layui-font-gray">tree</span>
  342. </a>
  343. </div>
  344. </li>
  345. <li class="">
  346. <div class="layui-menu-body-title">
  347. <a href="../modules/colorpicker.html" tppabs="http://www.layui.com/doc/modules/colorpicker.html">
  348. <span>颜色选择器 </span>
  349. <span class="layui-font-12 layui-font-gray">colorpicker</span>
  350. </a>
  351. </div>
  352. </li>
  353. <li class="">
  354. <div class="layui-menu-body-title">
  355. <a href="../modules/element.html" tppabs="http://www.layui.com/doc/modules/element.html">
  356. <span>常用元素操作 </span>
  357. <span class="layui-font-12 layui-font-gray">element</span>
  358. </a>
  359. </div>
  360. </li>
  361. <li class="">
  362. <div class="layui-menu-body-title">
  363. <a href="../modules/slider.html" tppabs="http://www.layui.com/doc/modules/slider.html">
  364. <span>滑块 </span>
  365. <span class="layui-font-12 layui-font-gray">slider</span>
  366. </a>
  367. </div>
  368. </li>
  369. <li class="">
  370. <div class="layui-menu-body-title">
  371. <a href="../modules/rate.html" tppabs="http://www.layui.com/doc/modules/rate.html">
  372. <span>评分 </span>
  373. <span class="layui-font-12 layui-font-gray">rate</span>
  374. </a>
  375. </div>
  376. </li>
  377. <li class="">
  378. <div class="layui-menu-body-title">
  379. <a href="../modules/carousel.html" tppabs="http://www.layui.com/doc/modules/carousel.html">
  380. <span>轮播 </span>
  381. <span class="layui-font-12 layui-font-gray">carousel</span>
  382. </a>
  383. </div>
  384. </li>
  385. <li class="">
  386. <div class="layui-menu-body-title">
  387. <a href="layedit.html" tppabs="http://www.layui.com/doc/modules/layedit.html">
  388. <span>富文本编辑器 </span>
  389. <span class="layui-font-12 layui-font-gray">layedit</span>
  390. </a>
  391. </div>
  392. </li>
  393. <li class="">
  394. <div class="layui-menu-body-title">
  395. <a href="../modules/flow.html" tppabs="http://www.layui.com/doc/modules/flow.html">
  396. <span>流加载 </span>
  397. <span class="layui-font-12 layui-font-gray">flow</span>
  398. </a>
  399. </div>
  400. </li>
  401. <li class="">
  402. <div class="layui-menu-body-title">
  403. <a href="../modules/util.html" tppabs="http://www.layui.com/doc/modules/util.html">
  404. <span>工具组件 </span>
  405. <span class="layui-font-12 layui-font-gray">util</span>
  406. </a>
  407. </div>
  408. </li>
  409. <li class="">
  410. <div class="layui-menu-body-title">
  411. <a href="../modules/code.html" tppabs="http://www.layui.com/doc/modules/code.html">
  412. <span>代码高亮显示 </span>
  413. <span class="layui-font-12 layui-font-gray">code</span>
  414. </a>
  415. </div>
  416. </li>
  417. </ul>
  418. </li>
  419. </ul>
  420. </div>
  421. <div class="layui-hide-v"> - </div>
  422. </div>
  423. <div class="layui-col-md9 site-content">
  424. <h1 class="site-h1">底层方法</h1>
  425. <blockquote class="layui-elem-quote">
  426. <p>本篇主要介绍基础库所发挥的作用,其中过滤了大部分在外部不常用的方法,侧重罗列了基础框架支撑。</p>
  427. </blockquote>
  428. <div class="site-title">
  429. <fieldset><legend><a name="config">全局配置</a></legend></fieldset>
  430. </div>
  431. <div class="site-text">
  432. <p>方法:<em>layui.config(options)</em></p>
  433. <p>你可以在使用模块之前,全局化配置一些参数,尽管大部分时候它不是必须的。所以我们目前提供的全局配置项非常少,这也是为了减少一些不必要的工作,尽可能让使用变得更简单。目前支持的全局配置项如下:</p>
  434. <pre class="layui-code">
  435. layui.config({
  436. dir: '/res/layui/' //layui.js 所在目录(<span style="color: #FF5722">如果是 script 单独引入 layui.js,无需设定该参数</span>)一般可无视
  437. ,version: false //一般用于更新模块缓存,默认不开启。设为 true 即让浏览器不缓存。也可以设为一个固定的值,如:201610
  438. ,debug: false //用于开启调试模式,默认 false,如果设为 true,则JS模块的节点会保留在页面
  439. ,base: '' //设定扩展的 layui 模块的所在目录,一般用于外部模块扩展
  440. });
  441. </pre>
  442. <p>如果你对 layui.js 本身进行了动态加载等其他特殊场景,那么上述<code>layui.config</code> 所设定的<code>dir</code>参数会因此失效,它会在部分组件的依赖文件(css)加载后才执行,此时你可以在动态加载 <code>layui.js</code> 之前预先定义一个我们约定好的全局对象:</p>
  443. <pre class="layui-code">
  444. &lt;script&gt;
  445. var LAYUI_GLOBAL = {
  446. dir: '/res/layui/' //layui.js 所在目录(<span class="layui-font-red">layui 2.6.6 开始新增</span>)
  447. };
  448. &lt;/script&gt;
  449. </pre>
  450. <blockquote class="layui-elem-quote layui-text">
  451. 提示:以上 dir 参数的目录设定仅针对特殊场景,如是采用 script 标签正常引入 layui 的,可以无视该 dir 参数。
  452. </blockquote>
  453. </div>
  454. <div class="site-title">
  455. <fieldset><legend><a name="define">定义模块</a></legend></fieldset>
  456. </div>
  457. <div class="site-text">
  458. <p>方法:<em>layui.define([mods], callback)</em></p>
  459. <p>通过该方法可在新的 JS 文件中定义一个 <em>layui 模块</em>。参数 mods 是可选的,用于声明该模块所依赖的模块。callback 即为模块加载完毕的回调函数,它返回一个 exports 参数,用于输出该模块的接口。</p>
  460. <pre class="layui-code">
  461. /** demo.js **/
  462. layui.define(function(exports){
  463. //do something
  464. exports('demo', {
  465. msg: 'Hello Demo'
  466. });
  467. });
  468. </pre>
  469. <p>
  470. 跟 RequireJS 最大不同的地方在于接口输出,exports 是一个函数,它接受两个参数,第1个参数为模块名,第2个参数为模块接口。
  471. <br>当你声明了上述的一个模块后,你就可以在外部使用了,demo 就会注册到 layui 对象下,即可通过 <code>var demo = layui.demo</code> 去得到该模块接口。你也可以在定义一个模块的时候,声明该模块所需的依赖,如:</p>
  472. <pre class="layui-code">
  473. /** demo.js **/
  474. layui.define(['layer', 'laypage', 'mod1'], function(exports){ //此处 mod1 为你的任意扩展模块
  475. //do something
  476. exports('demo', {
  477. msg: 'Hello Demo'
  478. });
  479. });
  480. </pre>
  481. <p>上述的 <code>layer、laypage</code> 都是 layui 的内置模块。</p>
  482. </div>
  483. <div class="site-title">
  484. <fieldset><legend><a name="use">加载模块</a></legend></fieldset>
  485. </div>
  486. <div class="site-text">
  487. <p>方法:<em>layui.use([mods], callback)</em></p>
  488. <div class="layui-text">
  489. <ul>
  490. <li>
  491. 参数 <em>mods</em>:如果填写,必须是一个 layui 合法的模块名(不能包含目录)。
  492. <br><span class="layui-font-red">从 layui 2.6 开始</span>,若 mods 不填,只传一个 callback 参数,则表示引用所有内置模块。
  493. </li>
  494. <li>
  495. 参数 <em>callback</em>:即为模块加载完毕的回调函数。
  496. <br><span class="layui-font-red">从 layui 2.6 开始</span>,该回调会在 html 文档加载完毕后再执行,确保你的代码在任何地方都能对元素进行操作。
  497. </li>
  498. </ul>
  499. </div>
  500. <pre class="layui-code">
  501. //引用指定模块
  502. layui.use(['layer', 'laydate'], function(){
  503. var layer = layui.layer
  504. ,laydate = layui.laydate;
  505. //do something
  506. });
  507. //<span class="layui-font-red">引用所有模块(layui 2.6 开始支持)</span>
  508. layui.use(function(){
  509. var layer = layui.layer
  510. ,laydate = layui.laydate
  511. ,table = layui.table;
  512. //…
  513. //do something
  514. });
  515. </pre>
  516. <p>你还可以通过回调函数得到模块对象,如</p>
  517. <pre class="layui-code">
  518. //通过回调的参数得到模块对象
  519. layui.use(['layer', 'laydate', 'table'], function(layer, laydate, table){
  520. //使用 layer
  521. layer.msg('test');
  522. //使用 laydate
  523. laydate.render({});
  524. //使用 table
  525. table.render({})
  526. });
  527. </pre>
  528. <p>
  529. </div>
  530. <!--<div class="site-title">
  531. <fieldset><legend><a name="all">加载完整内置模块</a></legend></fieldset>
  532. </div>
  533. <div class="site-text">
  534. <p>方法:<em>layui.all(callback)</em></p>
  535. <p>除了使用use方法加载特定需要的模块,Layui实际上还提供了构建后的完整版模块,它是一个合并的文件,通过all方法即可加载,目前它只有<em>150kb</em>上下,gzip后只有<em>50kb</em>,所以说这是一个比较小的资源(可见Layui是多么的轻灵)。如果你的页面需要大量用到layui的许多模块,我们推荐你使用该方法,同时他也只会产生一个资源请求,简单粗暴又省事,实为懒人所必备之神器也!</p>
  536. <pre class="layui-code">
  537. /**
  538. my.js
  539. 依赖layui的全部模块
  540. **/
  541. layui.all(function(){
  542. var layer = layui.layer
  543. ,laytpl = layui.laytpl
  544. ,laypage = layui.laypage
  545. ,laydate = layui.data
  546. //……
  547. //尽情地使用Layui全部的内置模块吧,妈妈说根本不用去想页面可能要用到什么模块了呢。。
  548. });
  549. </pre>
  550. <blockquote class="layui-elem-quote layui-quote-nm">
  551. 不过,我们并不十分推荐你采用该方式,因为如果你要用到全部内置模块,还不如直接采用:<a href="/doc/#simple">非模块化方式</a>
  552. </blockquote>
  553. </div>-->
  554. <div class="site-title">
  555. <fieldset><legend><a name="link">动态加载 CSS</a></legend></fieldset>
  556. </div>
  557. <div class="site-text">
  558. <p>方法:<em>layui.link(href)</em></p>
  559. <p>href 即为 css 路径。注意:该方法并非是你使用 layui 所必须的,它一般只是用于动态加载你的外部 CSS 文件。</p>
  560. </div>
  561. <div class="site-title">
  562. <fieldset><legend><a name="data">本地存储</a></legend></fieldset>
  563. </div>
  564. <div class="site-text">
  565. <p>本地存储是对 localStorage 和 sessionStorage 的友好封装,可更方便地管理本地数据。</p>
  566. <blockquote class="layui-elem-quote layui-quote-nm layui-text">
  567. <ul>
  568. <li>localStorage 持久化存储:<em>layui.data(table, settings),数据会永久存在,除非物理删除。</em></li>
  569. <li>sessionStorage 会话性存储:<em>layui.sessionData(table, settings)</em>,页面关闭后即失效。注:<em>layui 2.2.5 新增</em></li>
  570. </ul>
  571. </blockquote>
  572. <p>上述两个方法的使用方式是完全一样的。其中参数 <em>table</em> 为表名,<em>settings</em>是一个对象,用于设置 key、value。下面以 layui.data 方法为例:
  573. <pre class="layui-code">
  574. //【增】:向 test 表插入一个 nickname 字段,如果该表不存在,则自动建立。
  575. layui.data('test', {
  576. key: 'nickname'
  577. ,value: '贤心'
  578. });
  579. //【删】:删除 test 表的 nickname 字段
  580. layui.data('test', {
  581. key: 'nickname'
  582. ,remove: true
  583. });
  584. layui.data('test', null); //删除test表
  585. //【改】:同【增】,会覆盖已经存储的数据
  586. //【查】:向 test 表读取全部的数据
  587. var localTest = layui.data('test');
  588. console.log(localTest.nickname); //获得“贤心”
  589. </pre>
  590. </div>
  591. <div class="site-title">
  592. <fieldset><legend><a name="device">获取浏览器信息</a></legend></fieldset>
  593. </div>
  594. <div class="site-text">
  595. <p>方法:<em>layui.device(key)</em>,参数 key 是可选的</p>
  596. <p>由于 layui 的一些功能进行了兼容性处理和响应式支持,因此该方法同样发挥了至关重要的作用。其返回的信息如下:</p>
  597. <pre class="layui-code">
  598. var device = layui.device();
  599. //device 即可根据不同的设备返回下述不同的信息
  600. <pre class="layui-code" lay-skin="notepad">
  601. {
  602. os: "windows" //当前浏览器所在的底层操作系统,如:Windows、Linux、Mac 等
  603. ,ie: false //当前浏览器是否为 ie6-11 的版本,如果不是 ie 浏览器,则为 false
  604. ,weixin: false //当前浏览器是否为微信 App 环境
  605. ,android: false //当前浏览器是否为安卓系统环境
  606. ,ios: false //当前浏览器是否为 IOS 系统环境
  607. ,mobile: false //当前浏览器是否为移动设备环境(v2.5.7 新增)
  608. }
  609. </pre>
  610. </pre>
  611. <p>
  612. 有时你的 App 可能会对 userAgent 插入一段特定的标识,譬如:
  613. <blockquote class="layui-elem-quote layui-quote-nm" style="color: #999;">
  614. Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 <a>myapp/1.8.6</a> Safari/537.36
  615. </blockquote>
  616. </p>
  617. <p>你要验证当前的 WebView 是否在你的 App 环境,即可通过上述的<em>myapp</em>(即为 Native 给 Webview 插入的标识,可以随意定义)来判断。</p>
  618. <pre class="layui-code">
  619. var device = layui.device('myapp');
  620. if(device.myapp){
  621. alert('在我的App环境');
  622. }
  623. </pre>
  624. </div>
  625. <div class="site-title">
  626. <fieldset><legend><a name="other">其它底层方法</a></legend></fieldset>
  627. </div>
  628. <div class="site-text">
  629. <p>除上述介绍的方法外,layui 内部还提供了许多底层引擎,他们同样是整个 layui 框架的有力支撑,在日常应用中通常也会用到:</p>
  630. <table class="layui-table">
  631. <thead>
  632. <tr>
  633. <th style="width: 280px;">方法/属性</th>
  634. <th>描述</th>
  635. </tr>
  636. </thead>
  637. <tbody>
  638. <tr>
  639. <td>layui.cache</td>
  640. <td>静态属性。获得一些配置及临时的缓存信息</td>
  641. </tr>
  642. <tr>
  643. <td>layui.extend(options)</td>
  644. <td>拓展一个模块别名,如:layui.extend({test: '/res/js/test'})</td>
  645. </tr>
  646. <tr>
  647. <td>layui.each(obj, fn)</td>
  648. <td>对象(Array、Object、DOM 对象等)遍历,可用于取代 for 语句</td>
  649. </tr>
  650. <tr>
  651. <td>layui._typeof(operand)</td>
  652. <td>
  653. 获取详细数据类型(基本数据类型和各类常见引用类型)如:
  654. <p>
  655. <code>layui._typeof([]); //array</code>
  656. <code>layui._typeof({}); //object</code>
  657. <code>layui._typeof(new Date()); //date</code>等等。
  658. </p>
  659. <span class="layui-font-red">该方法为 layui 2.6.7 新增</span>
  660. </td>
  661. </tr>
  662. <tr>
  663. <td>layui._isArray(obj)</td>
  664. <td>
  665. 对象是否为泛数组结构。如 Array、NodeList、jQuery 对象等等。
  666. <p>
  667. <code>layui._isArray([1,6]); //true</code> <code>layui._isArray($('div')); //true</code>
  668. <code>layui._isArray(document.querySelectorAll('div')); //true</code>
  669. </p>
  670. <span class="layui-font-red">该方法为 layui 2.6.7 新增</span>
  671. </td>
  672. </tr>
  673. <tr>
  674. <td>layui.getStyle(node, name)</td>
  675. <td>
  676. 获得一个原始 DOM 节点的 style 属性值,如:
  677. <br><code>layui.getStyle(document.body, 'font-size')</code>
  678. </td>
  679. </tr>
  680. <tr>
  681. <td>layui.img(url, callback, error)</td>
  682. <td>图片预加载</td>
  683. </tr>
  684. <tr>
  685. <td>layui.sort(obj, key, desc)</td>
  686. <td>
  687. 将数组中的对象按某个成员重新对该数组排序,如:
  688. <br><code>layui.sort([{a: 3},{a: 1},{a: 5}], 'a')</code>
  689. </td>
  690. </tr>
  691. <tr>
  692. <td>layui.router()</td>
  693. <td>获得 location.hash 路由结构,一般在单页面应用中发挥作用。</td>
  694. </tr>
  695. <tr>
  696. <td>layui.url(href)</td>
  697. <td>
  698. 用于将一段 URL 链接中的 pathname、search、hash 属性值进行对象化处理
  699. <p>
  700. 参数: <em>href</em> 可选。若不传,则自动读取当前页面的 url(即:location.href)
  701. <br>示例:<code>var url = layui.url();</code>
  702. </p>
  703. </td>
  704. </tr>
  705. <tr>
  706. <td>layui.hint()</td>
  707. <td>
  708. 向控制台打印一些异常信息,目前只返回了 error 方法:
  709. <br><code>layui.hint().error('出错啦');</code>
  710. </td>
  711. </tr>
  712. <tr>
  713. <td>layui.stope(e)</td>
  714. <td>阻止事件冒泡</td>
  715. </tr>
  716. <tr>
  717. <td>layui.onevent(modName, events, callback)</td>
  718. <td>增加自定义模块事件。有兴趣的同学可以阅读 layui.js 源码以及 form 模块</td>
  719. </tr>
  720. <tr>
  721. <td>layui.event(modName, events, params)</td>
  722. <td>执行自定义模块事件,搭配 onevent 使用</td>
  723. </tr>
  724. <tr>
  725. <td>layui.off(events, modName)</td>
  726. <td>
  727. 用于移除模块相关事件的监听(v2.5.7 新增)
  728. <p style="line-height:26px;">
  729. 如:<code>layui.off('select(filter)', 'form')</code>,
  730. <br>那么 <code>form.on('select(filter)', callback)</code>的事件将会被移除。
  731. </p>
  732. </td>
  733. </tr>
  734. <tr>
  735. <td>layui.factory(modName)</td>
  736. <td>用于获取模块对应的 define 回调函数</td>
  737. </tr>
  738. </tbody>
  739. </table>
  740. </div>
  741. <div class="site-title">
  742. <fieldset><legend><a name="third_party">第三方工具</a></legend></fieldset>
  743. </div>
  744. <div class="site-text">
  745. <p>layui <strong>部分模块</strong>依赖<em> jQuery</em>(比如 layer),但是你并不用去额外加载 jQuery。layui 已经将 jQuery 最稳定的一个版本改为 layui 的内部模块,当你去使用 layer 之类的模块时,它会首先判断你的页面是否已经引入了 jQuery,如果没有,则加载内部的 jQuery 模块,如果有,则不会加载。</p>
  746. <p>另外,我们的图标取材于阿里巴巴矢量图标库(<em>iconfont</em>),构建工具采用<em> Gulp </em>。除此之外,不依赖于任何第三方工具。</p>
  747. </div>
  748. <div class="layui-elem-quote">
  749. <p>layui - 在每一个细节中,用心与你沟通</p>
  750. </div>
  751. </div>
  752. </div>
  753. <div class="layui-footer footer footer-doc">
  754. <p>
  755. Copyright &copy; 2021 <a href="../../index.html" tppabs="http://www.layui.com/">「本站仅为 layui 文档保留的镜像站点,与官方无关」</a> MIT Licensed</p>
  756. <p>
  757. <a href="../../about/disclaimer.html" tppabs="http://www.layui.com/about/disclaimer.html" target="_blank">免责声明</a>
  758. <a href="../../about/relatedlinks.html" tppabs="http://www.layui.com/about/relatedlinks.html" target="_blank">友链</a>
  759. <a href="javascript:;" site-event="weixinmp">公众号</a>
  760. </p>
  761. </div>
  762. <script>
  763. window.global = {
  764. pageType: 'doc'
  765. ,preview: function(){
  766. var preview = document.getElementById('LAY_preview');
  767. return preview ? preview.innerHTML : '';
  768. }()
  769. };
  770. </script>
  771. <div class="site-tree-mobile layui-hide">
  772. <i class="layui-icon layui-icon-spread-left"></i>
  773. </div>
  774. <div class="site-mobile-shade"></div>
  775. <script src="/public/layui/dist/layui.js" tppabs="http://res.layui.com/layui/dist/layui.js?t=1632428048355" charset="utf-8"></script>
  776. <script>
  777. layui.config({
  778. base: '..//public/static/lay/modules/layui/'
  779. ,version: '1632428048355'
  780. }).use('global');
  781. </script>
  782. <script>
  783. </script>
  784. </body>
  785. </html>