前端requireJs模塊化開發(fā)插件

requireJs主要思想上是文件獨立形成模塊,但又互相依賴,方便代碼绳锅。用官網 requireJs 的話來說,就是用它來加速酝掩、優(yōu)化代碼鳞芙,但其主要目的還是為了代碼的模塊化

本文主要使用jQuery開發(fā)一個自定義下拉框組件

一、引入requireJs

  • 文件目錄結構


    目錄解釋:應該都能看懂期虾,我們需要依賴的文件如jQuery放在lib文件夾內

  • 引入requireJs文件
    index.html
    <script data-main="js/demo" src="js/lib/require.js"></script>
    首先你得有requireJs文件原朝,下載鏈接 requireJs , data-main為文件主模塊 ,假如我們的程序js文件為demo.js , 默認后綴 .js 可以不用寫

  • 配置requireJs文件
    通過config設置一組腳本,有助于我們在使用腳本時碼更少的字镶苞。為了方便喳坠,我直接將配置代碼寫到demo.js文件中
    demo.js

requirejs.config({
    baseUrl: 'js/lib',
    paths: {
        dropmenu: '../dropmenu/dropmenu'
    }
});

baseUrl從字面意思理解就是默認目錄,paths簡化模塊名稱,方便我們使用時少寫代碼,同時不容易因為結構麻煩而混淆
很簡單的例子就是津畸,如果沒有定義paths畦徘,我們依賴dropmenu模塊需要這樣寫:

require(['../dropmenu/dropmenu'],function(dropmenu) {});```
有了``paths``后雏赦,這樣寫:

require(['dropmenu'],function(dropmenu) {});```
更多配置選項請看 config

二、編寫插件

這里我們需要使用define定義模塊晾浴,dropmenu.js文件主要代碼如下

define(['jquery'],function($){
    return function(selector,options){
      this.dropmenu = $(selector);
      if(this.dropmenu.length>1){
           this.dropmenu.each(function(){
               _lookTheMenu($(this));
           })
      }else{
          _lookTheMenu(this.dropmenu);
      }
      function _lookTheMenu(menu){...}
      function _dropOpen(superMenu,subMenus){...}
      function _dropClose(superMenu,subMenus){...}
    }
})

三、使用插件

  • 第一步牍白,添加html代碼
    index.html
<!--下拉菜單-->
<a href="javascript:;" class="dropmenu dropmenu-trigger">
    <div>點我點我</div>
    <ul class="sub-dropmenu">
        <li>發(fā)起冷笑話</li>
        <li>發(fā)起聚餐</li>
        <li>發(fā)起睡覺</li>
        <li class="divider"></li>
        <li>發(fā)起嘿嘿嘿</li>
    </ul>
</a>
  • 第二步 引入css
  • 第三步 書寫js
    demo.js
require(['dropmenu'],function(dropmenu) {
    // 初始化dropmenu對象
    var operateDropmenus = new dropmenu('.dropmenu');
});

為啥既用了require又用了define脊凰?define定義模塊,require使用模塊

插件源代碼見 github-4js 茂腥,源碼僅供參考學習使用狸涌,不得用于商用切省,違者必究。
本文完結帕胆!能力有限数尿,如有不足之處望大家指出!謝謝惶楼!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末右蹦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子歼捐,更是在濱河造成了極大的恐慌何陆,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豹储,死亡現(xiàn)場離奇詭異贷盲,居然都是意外死亡,警方通過查閱死者的電腦和手機剥扣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門巩剖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钠怯,你說我怎么就攤上這事佳魔。” “怎么了晦炊?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵鞠鲜,是天一觀的道長。 經常有香客問我断国,道長贤姆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任稳衬,我火速辦了婚禮霞捡,結果婚禮上,老公的妹妹穿的比我還像新娘薄疚。我一直安慰自己碧信,他們只是感情好,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布输涕。 她就那樣靜靜地躺著音婶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪莱坎。 梳的紋絲不亂的頭發(fā)上衣式,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音,去河邊找鬼碴卧。 笑死弱卡,一個胖子當著我的面吹牛,可吹牛的內容都是我干的住册。 我是一名探鬼主播婶博,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荧飞!你這毒婦竟也來了凡人?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤叹阔,失蹤者是張志新(化名)和其女友劉穎挠轴,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體耳幢,經...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡岸晦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了睛藻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片启上。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖店印,靈堂內的尸體忽然破棺而出冈在,到底是詐尸還是另有隱情,我是刑警寧澤吱窝,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布讥邻,位于F島的核電站迫靖,受9級特大地震影響院峡,放射性物質發(fā)生泄漏。R本人自食惡果不足惜系宜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一照激、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盹牧,春花似錦俩垃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至有滑,卻和暖如春跃闹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工望艺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留苛秕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓找默,卻偏偏與公主長得像艇劫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惩激,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容