分享之Juice UI: 整合了jQuery UI的開源ASP.NET Web控件


前言 

這篇文章的原文來自Jon Galloway,想看原文的請猛戳鏈接。第一次接觸這個Juice UI是看到同事分享的郵件,當時只是粗略看看,不過感覺把jQuery UI整合到ASP.NET Web控件里去確實是個不錯的主意。今天偶然在網上看到了這篇文章,就動手把它翻譯過來,和大家分享。以下是譯文:

 

今天早上的MVP峰會上,Scott Hunter剛剛從appendTo網站新發布了一個開源項目,名字叫Juice UI。Juice UI是一個Web窗體控件的集合,並整合了jQuery UI。你可以通過添加JuiceUI NuGet package到你自己的應用中,立即就可以使用它。同時源碼是提供下載的(go nuts with the source), 他的版權協議是基於MIT和GPL的。

 

 

Juice UI,能做什么?

jQuery UI 是一個構建在jQuery之上的UI庫。它為平常的場景提供了非常多且強大的部件,例如日期選擇期,對話框和選項卡等等;並且一些頂尖的js開發者(some of the sharpest Javascript developers in the field)參與開發提供了堅實的基礎。雖然你總是可以利用一些使用了jQuery和jQuery UI的庫,但是全新的Juice UI控件可以讓這些工作更簡單。

例如:

   1:  <asp:TextBox runat="server" ID="_Restrict" />
   2:  <Juice:Datepicker
   3:       runat="server"
   4:       TargetControlID="_Restrict"
   5:       MinDate="-20"
   6:       MaxDate="+1M +10D" /> 

執行這段代碼,就可以得到:

2012-02-28 09h16_03

 

組件和行為

Juice UI 發布的時候就已經包括了14個部件或行為。如果你想查看全部控件列表的話,請點擊http://juiceui.com/controls, 並且提供互動例子讓我們更深入了解控件。

2012-02-28 09h17_29

下面也列出了所有控件,點擊可直接轉到相應文檔:

 

實戰

  • 添加JuiceUI NuGet package

打開VS2010,創建項目前請確保VS2010已安裝了NuGet插件。創建一個ASP.NET 4 Web Forms項目。右擊項目中的References文件夾,選擇Manage NuGet Packages..., 然后找到 "juiceui",點擊安裝。


2012-02-28 08h10_11

 

  • JuiceUI 的名字空間

通過NuGet package添加JuiceUI時,NuGet會自動的把Juice UI的名字空間寫入到你的web.config文件里, 比如:

   1:  <configuration> 
   2:      <system.web> 
   3:          <compilation debug="true" targetFramework="4.0" /> 
   4:          <pages> 
   5:              <controls> 
   6:                  <add assembly="JuiceUI" namespace="Juice" tagPrefix="juice" /> 
   7:              </controls> 
   8:          </pages> 
   9:      </system.web> 
  10:  </configuration> 

如果確實需要Juice UI名字空間的話,通常我會移除上面這段config,在頁面中使用<@Import Namespace="JuiceUI" />指令來添加名字空間。

 

使用Juice UI控件

首先,你需要一個<asp:ScriptManager> - 把它添加到一個頁面上或者你site的Master頁面上。

   1:  <asp:ScriptManager id="_Script" runat="server" /> 

添加完成后,你就可以使用控件了。這些都是擴展控件,所以你需要使用TargetControlID屬性來指出哪個Web窗體控件將擴展Juice UI的行為。這兒有一個精簡了的例子,將DatePicker行為與一個TextBox掛鈎:

   1:  <asp:TextBox runat="server" ID="DateSample" /> 
   2:  <Juice:Datepicker runat="server" TargetControlID="DateSample" /> 

另外我把一個可拖拽(Draggable )的行為指向一個Panel:

   1:  <asp:Panel runat="server" ID="DragBox" Style="border:1px solid; width:100px;"> 
   2:      Hi. You can drag me around. 
   3:  </asp:Panel> 
   4:  <Juice:Draggable runat="server" TargetControlID="DragBox" /> 

需要注意的是,這只是非常簡單的例子並且沒有CSS。在Juice UI源碼里有很多更復雜的Juice UI樣例。


運行這個頁面,我們將會看見我們所期待的:一個擁有日期選擇器的textbox和一個可以拖拽的panel。

2012-02-28 10h34_32

下面是這個頁面的源代碼:

   1:  <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 
   2:      CodeBehind="Default.aspx.cs" Inherits="Juice_Sample._Default" %> 
   3:  <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
   4:  </asp:Content> 
   5:  <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
   6:   
   7:      <asp:ScriptManager id="_Script" runat="server" /> 
   8:      
   9:      <asp:TextBox runat="server" ID="DateSample" /> 
  10:      <Juice:Datepicker runat="server" TargetControlID="DateSample" /> 
  11:      
  12:      <asp:Panel runat="server" ID="DragBox" Style="border:1px solid; width:100px;"> 
  13:          Hi. You can drag me around. 
  14:      </asp:Panel> 
  15:      <Juice:Draggable runat="server" TargetControlID="DragBox" /> 
  16:   
  17:  </asp:Content> 

如果你有興趣的話,在瀏覽器中查看網頁的源代碼,你會發現web控件和JuiceUI行為已經整合了,使用的是HTML5的data-屬性:

   1:  <input name="ctl00$MainContent$DateSample" type="text" 
   2:          id="MainContent_DateSample" 
   3:          data-ui-widget="datepicker" /> 
   4:  <div id="MainContent_DragBox" 
   5:          data-ui-widget="draggable" 
   6:          style="border:1px solid; width:100px;"> 
   7:      Hi. You can drag me around. 
   8:  </div> 
 
        

似乎很熟悉...

確實,Juice UI用起來非常像Ajax Control Toolkit,但它的核心是jQuery UI。從另一方面說,它是為所有jQuery UI里的部件(widgets)和效果(effects)創建了Web窗體擴展和腳本控制。


更多...

想要尋找更多關於Juice UI的資料?最好的地方是Juice UI site,里面有提供互動的例子和文檔。

需要源代碼的,可以從GitHub repository下載,里面包含了一個樣例項目。

最后,特別推薦的是StackOverflow (using the juiceui tag)ASP.NET jQuery forum,經常逛逛可以獲得不少幫助。

 

后記

個人覺得,Juice UI要被廣泛接受還需要走很長的一段路,畢竟Ajax control Toolkit在不斷更新,其長期發展方向也是jQuery,所以競爭力很強。不管怎樣,Juice UI為我們提出了一個新的思路去整合現有的前端JS框架。Bonne idée, c'est parti!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM