首頁 >web前端 >Layui教程 >layui怎麼使用

layui怎麼使用

angryTom
angryTom原創
2019-07-29 10:39:3814815瀏覽

layui怎麼使用

如果你想了解更多關於layui的知識,可以點選:#layui教學

layui怎麼使用

先看下Layui的介紹:

  layui 是一款採用自身模組規範編寫的情懷級前端UI框架,遵循原生HTML/CSS/JS的書寫與組織形式,門檻極低,拿來即用。其外在極簡,卻又不失飽滿的內在,體積輕盈,組件豐盈,從核心代碼到API的每一處細節都經過精心雕琢,非常適合界面的快速開發。 layui 首個版本發佈於2016年金秋,她有別於那些基於MVVM底層的UI框架,卻並非逆道而行,而是信奉返璞歸真之道。確切地說,她更多是為服務端程式設計師量身定做,你無需涉足各種前端工具的複雜配置,只需面對瀏覽器本身,讓一切你所需要的元素與交互,從這裡信手拈來。 layui 相容於人類正在使用的全部瀏覽器(IE6/7除外),可作為PC端後台系統與前台介面的速成開發方案。

取得Layui

  可以 官網首頁 下載到 layui 的最新版,它經過了自動化構建,更適合用於生產環境。目錄結構如下:

 ├─css //css目录
  │  │─modules //模块css目录(一般如果模块相对较大,我们会单独提取,比如下面三个:)
  │  │  ├─laydate
  │  │  ├─layer
  │  │  └─layim
  │  └─layui.css //核心样式文件
  ├─font  //字体图标目录
  ├─images //图片资源目录(目前只有layim和编辑器用到的GIF表情)
  │─lay //模块核心目录
  │  └─modules //各模块组件
  │─layui.js //基础核心库
  └─layui.all.js //包含layui.js和所有模块的合并文件

快速上手

#取得layui 後,將其完整地部署到你的專案目錄(或靜態資源伺服器),你只需要引入下述兩個文件:

./layui/css/layui.css
./layui/layui.js //提示:如果是采用非模块化方式(最下面有讲解),此处可换成:./layui/layui.all.js

  你只需要載入這兩個文件,不用去管其他任何文件。因為他們(例如各模組)都是在最終使用的時候才會自動載入。這是一個基本的入門頁面;

模組化方式

#  我們推薦你遵循layui 的模組規範建立一個入口文件,並透過layui.use() 方式來載入該入口文件,如下所示:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <title>开始使用layui</title>
  <link rel="stylesheet" href="../layui/css/layui.css">
</head>
<body>
 
<!-- 你的HTML代码 -->
 
<script src="../layui/layui.js"></script>
<script>
//一般直接写在一个js文件中
layui.use([&#39;layer&#39;, &#39;form&#39;], function(){
  var layer = layui.layer
  ,form = layui.form;
  
  layer.msg(&#39;Hello World&#39;);
});
</script> 
</body>
</html>

#非模組化方式(即所有模組一次載入)

  如果你不喜歡layui 的模組化組織方式,你完全可以毅然採用「一次性加載」的方式,我們將layui.js 及所有模組單獨打包合併成了一個完整的js文件,用的時候直接引入這一個文件即可。當你採用這樣的方式時,你無需再透過layui.use() 方法載入模組,直接使用即可,如:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <title>非模块化方式使用layui</title>
  <link rel="stylesheet" href="../layui/css/layui.css">
</head>
<body>
 
<!-- 你的HTML代码 -->
 
<script src="../layui/layui.all.js"></script>
<script>
//由于模块都一次性加载,因此不用执行 layui.use() 来加载对应模块,直接使用即可:
;!function(){
  var layer = layui.layer
  ,form = layui.form;
  
  layer.msg(&#39;Hello World&#39;);
}();
</script> 
</body>
</html>

模組化與非模組化

  我還是比較喜歡模組化這個概念,需要的時候就加載,因為假如是非模組化的話,一開始就是加載全部js文件,但實際上有些頁面用到模組可能很少,並不需要載入這麼大的js文件,所以還是推薦使用模組化的方式。非模組化雖然方便,還是對使用者其實不太友善的。

模組規範

  layui 的模組是基於layui.js 內部實作的非同步模組載入方式,它並不遵循於AMD(沒有為什麼,畢竟任性呀!),而是自己定義了一套更輕量的模組規格。而這種方式在經過了大量的實踐後,成為 layui 最核心的模組載入引擎。

預先載入

  開門見山,還是直接說使用比較妥當。 Layui的模組載入採用核心的 layui.use(mods, callback)方法,當你的JS 需要用到Layui模組的時候,我們更推薦你採用預先加載,因為這樣可以避免到處寫layui.use的麻煩。你應該在最外層如此定義:

/*
  Demo1.js
  使用Layui的form和upload模块
*/
layui.use([&#39;form&#39;, &#39;upload&#39;], function(){  //如果只加载一个模块,可以不填数组。如:layui.use(&#39;form&#39;)
  var form = layui.form //获取form模块
  ,upload = layui.upload; //获取upload模块
  
  //监听提交按钮
  form.on(&#39;submit(test)&#39;, function(data){
    console.log(data);
  });
  
  //实例化一个上传控件
  upload({
    url: &#39;上传接口url&#39;
    ,success: function(data){
      console.log(data);
    }
  })
});

按需加載(不推薦)

  如果你有強迫症,你對網站的效能有極致的要求,你並不想預先載入所需的模組,而是在觸發一個動作的時候,才去載入模組,那麼,這是允許的。你不用在你的JS最外層去包裹一個大大的layui.use,你只需要:

/*
  Demo2.js
  按需加载一个Layui模块
*/
 
//……
//你的各种JS代码什么的
//……
 
//下面是在一个事件回调里去加载一个Layui模块
button.addEventListener(&#39;click&#39;, function(){
  layui.use(&#39;laytpl&#39;, function(laytpl){ //温馨提示:多次调用use并不会重复加载laytpl.js,Layui内部有做模块cache处理。
    var html = laytpl(&#39;&#39;).render({});
    console.log(html);
  });
});

  注意:如果你的JS中需要大量用到模組,我們並不建議你採用這種載入方式,因為這代表你要寫很多layui.use(),程式碼可維護性不高。
  建議還是採用:預先載入。即在一個JS檔中,寫一個use即可。

模組命名空間

#

  Layui的全部模块绑定在 layui对象下,内部由layui.define()方法来完成。每一个模块都会一个特有的名字,并且无法被占用。所以你无需担心模块的空间被污染,除非是你 delete layui.mod; 调用一个模块也必须借助layui对象的赋值。如:

layui.use([&#39;layer&#39;, &#39;laypage&#39;, &#39;laydate&#39;], function(){
  var layer = layui.layer //获得layer模块
  ,laypage = layui.laypage //获得laypage模块
  ,laydate = layui.laydate; //获得laydate模块
  
  //使用模块
});

  一个模块一旦加载后,就会注册在layui对象下,所以你无法直接用模块名来获得,而同样借助layui对象。譬如有时你可能会直接在元素的事件属性上去调用一个模块,如:

<input onclick="layui.laydate()">

扩展一个Layui模块

  layui 官方提供的模块有时可能还无法满足你,或者你试图按照layer的模块规范来扩展一个模块。那么你有必要认识layui.define()方法,相信你在文档左侧的“底层方法”中已有所阅读。下面就就让我们一起扩展一个Layui模块吧:

  第一步:确认模块名,假设为:test,然后新建一个test.js 文件放入项目任意目录下(注意:不用放入layui目录)

  第二步:编写test.js 如下:

/**
  扩展一个test模块
**/      
layui.define(function(exports){ //提示:模块也可以依赖其它模块,如:layui.define(&#39;layer&#39;, callback);
  var obj = {
    hello: function(str){
      alert(&#39;Hello &#39;+ (str||&#39;test&#39;));
    }
  };
  //输出test接口
  exports(&#39;test&#39;, obj);
});

  第三步:设定扩展模块所在的目录,然后就可以在别的JS文件中使用了

//config的设置是全局的
layui.config({
  base: &#39;/res/js/&#39; //假设这是test.js所在的目录
}).extend({ //设定模块别名
  test: &#39;test&#39; //如果test.js是在根目录,也可以不用设定别名
  ,test1: &#39;admin/test1&#39; //相对于上述base目录的子目录
});
 
//使用test
layui.use(&#39;test&#39;, function(){
  var test = layui.test;
  
  test.hello(&#39;World!&#39;); //弹出Hello World!
});
//使用test1
layui.use(&#39;test1&#39;, function(){
  var test = layui.test1;
  
  //……
});

大体上来说,Layui的模块定义很类似Require.js和Sea.js,但跟他们又有着明显的不同,譬如在接口输出等地方。

以上是layui怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多