導航:首頁 > 編程語言 > typeaheadminjs

typeaheadminjs

發布時間:2023-05-09 13:40:47

『壹』 如何使用Bootstrap中的typeahead.js來實現autocomplete

使用bootstrap2中bootstrap.js自帶了typeahead的模塊,兄伏可以直接使用,但是bootstrap3的bootstrap.js沒有集成typeahead自動提示模塊,因此需要下載bootstrap3-typeahead.js,另外如果羨余攜沒有下載bootstrap前端框架還毀脊需要下載bootstrap3.zip。
1、前台代碼如下,將jquery.js,bootstrap.css,bootstrap.js等包含其中:
<link href="themes/normal/css/bootstrap.css" rel="stylesheet">
<script src="http。//cdn。bootcss。com/jquery/1.10.2/jquery.min.js"></script>
<script src="themes/normal/js/bootstrap.min.js"></script>
<script src="themes/normal/js/bootstrap3-typeahead.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#receiptno').typeahead({
source: function (query, process) {
$.ajax({
url: '/mirage/index.php?it=barservice&op=get-receiptno',
type: 'POST',
dataType: 'JSON',
data: query,
success: function(data) {
console.log(data);
process(data);
}
});
}
});
});
</script>

『貳』 在線求解答:bootstrap typeahead插件結合ajax 使用的實例,要求親測可用不報錯.

使用bootstrap2中bootstrap.js自帶了typeahead的模塊,可以直接使用,但是bootstrap3的bootstrap.js沒有集成typeahead自動提示模塊,因此需要下載bootstrap3-typeahead.js,另外如果沒有下載bootstrap前端框架還需要下載bootstrap3.zip。
1、前台代碼如下,將jquery.js,bootstrap.css,bootstrap.js等包含其中:
<link href="themes/normal/css/bootstrap.css" rel="stylesheet">
<script src="http。//cdn。bootcss。com/jquery/1.10.2/jquery.min.js"></script>
<script src="themes/normal/js/bootstrap.min.js"></script>
<script src="themes/normal/js/bootstrap3-typeahead.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#receiptno').typeahead({
source: function (query, process) {
$.ajax({
url: '/mirage/index.php?it=barservice&op=get-receiptno',
type: 'POST',
dataType: 'JSON',
data: query,
success: function(data) {
console.log(data);
process(data);
}
});
}
});
});
</script>

『叄』 如何讓程序員更容易的開發Web界面

如何讓程序員更容易的開發Web界面,是一個持久的話題,所有的從事相關開發的公司都會碰到這個問題,並且被這個問題所深深困擾。
Tiny框架也不得不直視這個問題,確實來說,想解決這個問題,也是非常有難度與深度的,業界也有各種各樣的嘗試,這也是有各種各樣不同框架出現的原因。
Tiny框架構建者認為,完全採用一種框架解決所有問題,是不現實的。而且即使目前找得到一種非常好的框架,暫時可以滿足應用需要,但是隨著技術的發展,業務的進化,就會慢慢變得不再滿足業務需要。因此,Tiny框架構建從不再把做一套UI組件去適各種需求作為自己的目標。
反過來,我們看看在做Web應用中,可能會碰到的問題:
UI中JS的引入與順序,JS合並的問題
UI中css的引入與順序,CSS合並的問題
UI中碰到性能問題時的影響范圍,比如:一個樹出現問題,要改動許多用到樹的地方
代碼重復的問題,同樣的內容在許多地方都有,如果要改動就要改動許多個地方
整體布局調整困難的問題
程序員需要關注的內容太多的問題,JS,CSS,布局,後台業務,前台展現,尼瑪界面工程師必須得是全才才可以搞得定所有問題。
開發效率的問題
執行效率的問題,前台響應要求速度更快
集群的問題
國際化的問題
...
因此,我在以前寫過一篇文章:UI開發的終極解決方案感興趣的同學,可以去看看,今天的目標是利用TinyUI框架的重構SmartAdmin,使得更容易被使用。
SmartAdmin初識

SmartAdmin是一套基於JQuery,Bootstrap構建的UI組件庫,說直白些,它就是個大雜燴,它把各種JQuery插件和Bootstrap整合到一起,提供了一整套基本完整的應用開發UI庫,基本是拿著它就可以用來非常專業的應用系統了。

下面是界面,當然它內嵌提供了四套皮膚,可以進行切換的:

由於SmartAdmin是商業產品,需要購買,因此不能提供其Copy,據說在Bai可以搜到,據說可以下載。如果只是想看一下的話,請點擊此鏈接:http://192.241.236.31/test4.smartadmin/
SmartAdmin分析
通過對SmartAdmin的分析,發現其復用了大量的開源插件,並且利用了Ajax載入技術,在運行期載入了大量的JS插件或CSS,整個頁面採用Html+JS整合而成,許多JS與頁面還是分離的,也就是說對本頁面中的Dom元素的處理的JS不一定在當前html文件中,所以要想看得懂是非常困難的,如果想把慧羨它應用在自己的項目當中,也是非常困難的一件事情。
舉個例子來說,要顯示一個小部前顫拍件,需要寫這么一段內容:
?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

<div class="jarviswidget" id="wid-id-0">
�0�2<!-- widget options:
�0�2usage: <div class="jarviswidget" id="wid-id-0" data-widget-editbutton="false">
�0�2�0�2
�0�2data-widget-colorbutton="false"
�0�2data-widget-editbutton="false"
�0�2data-widget-togglebutton="false"
�0�2data-widget-deletebutton="false"
�0�2data-widget-fullscreenbutton="false"
�0�2data-widget-custombutton="false"
�0�2data-widget-collapsed="true"�0�洞首2
�0�2data-widget-sortable="false"
�0�2�0�2
�0�2-->
�0�2<header>
�0�2<h2><strong>Default</strong> <i>Widget</i></h2>
�0�2�0�2
�0�2</header>
�0�2
�0�2
�0�2<!-- widget div-->
�0�2<div>
�0�2�0�2
�0�2<!-- widget edit box -->
�0�2<div class="jarviswidget-editbox">
�0�2<!-- This area used as dropdown edit box -->
�0�2<input class="form-control" type="text">
�0�2<span class="note"><i class="fa fa-check text-success"></i> Change title to update and save instantly!</span>
�0�2�0�2
�0�2</div>
�0�2<!-- end widget edit box -->
�0�2�0�2
�0�2<!-- widget content -->
�0�2<div class="widget-body">
�0�2�0�2
�0�2<p> Widget comes with a default 10 padding to the body which can be removed by adding the class <code>.no-padding</code>�0�2
�0�2to the <code>.widget-body</code> class. The default widget also comes with 5 widget buttons as displayed on top right�0�2
�0�2corner of the widget header. </p>
�0�2<a href="javascript:void(0);" class="btn btn-default btn-lg"> <strong>Big</strong> <i>Button</i> </a>
�0�2�0�2
�0�2</div>
�0�2<!-- end widget content -->
�0�2�0�2
�0�2</div>
�0�2<!-- end widget div -->
�0�2�0�2
</div>

這個程序員處理起來還是相當有難度的,好吧,這還不算過分的。
執行下面的命令:
dir *.js /s /w
運行結果:
?

1
2

所列文件總數:
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2310 個文件�0�2�0�2�0�2�0�2�0�2 6,043,053 位元組

執行下面的命令:
dir *.css /s /w
運行結果:
?

1
2

所列文件總數:
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�236 個文件�0�2�0�2�0�2�0�2�0�2 1,511,412 位元組

裡面有這么多的JS,有這么多的CSS,它們的引入順序也是非常重要的,稍有差錯,就會有js錯誤的問題。
再來看看,JS載入過程:

可以看到,要訪問大量的js,CSS,對於伺服器的壓力是比較大的,客戶端載入時間也是比較長的,程序員要釐清這些關系,也是非常困難的。
SmartAdmin重構
對SmartAdmin重構,是指按照Tiny框架的體系結構來進行重構。
第一步,釐清關系
通過整理,發現smartadmin中使用的js插件有如下之多:
?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

bootstrap
bootstrapProgressbar
bootstrapSlider
bootstrapTags
bootstrapTimepicker
bootstraptree
bootstrapWizard
ckeditor
colorhelpers
colorpicker
datatables
delete-table-row
dropzone
easyPieChart
excanvas
fastclick
flot
FontAwesome
fueluxwizard
fullcalendar
ie-placeholder
ion-slider
jquery
jquery-form
jquery-nestable
jquery-touch
jqueryui
jqueryvalidate
js-migrate
jstorage
knob
markdown
maskedInput
maxlength
morris
msieFix
multiselect
notification
noUiSlider
pace
prettify
raphael
select2
selectToUISlider
smartadmin
smartwidgets
sparkline
summernote
superbox
throttle-denounce
typeahead
vectormap
x-editable

第二步:UI插件,組件包化:
比如JQuery組件包化,就是編寫下面的文件:jquery.ui.xml
?

1
2
3
4
5

<ui-components>
�0�2�0�2�0�2�0�2<ui-component name="jquery">
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2<js-resource>/jquery/jquery-1.11.0.js</js-resource>
�0�2�0�2�0�2�0�2</ui-component>
</ui-components>

比如JQueryUI組修的包化,就是編寫下面的文件:jqueryui.ui.xml
?

1
2
3
4
5
6

<ui-components>
�0�2�0�2�0�2�0�2<ui-component name="jqueryui" dependencies="jquery">
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2<js-resource>/jqueryui/js/jquery-ui-1.10.4.custom.js</js-resource>
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2<css-resource>/jqueryui/css/smoothness/jquery-ui-1.10.4.custom.css</css-resource>
�0�2�0�2�0�2�0�2</ui-component>
</ui-components>

比如BootStrap組件包化,就是寫下面的文件:bootstrap.ui.xml
?

1
2
3
4
5
6

<ui-components>
�0�2�0�2�0�2�0�2<ui-component name="bootstrap" dependencies="jqueryui">
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2<css-resource>/bootstrap/css/bootstrap.min.css</css-resource>
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2<js-resource>/bootstrap/js/bootstrap.js</js-resource>
�0�2�0�2�0�2�0�2</ui-component>
</ui-components>

其它類推,最主要的目的就是要分清,用到哪些JS,哪些CSS,並且整理組件包之間的依賴關系,比如,上面BootStrap就依賴了jqueryui,當然jqueryui依賴了JQuery
通過上面的依賴樹Tiny框架就可以自動構建好CSS及JS資源。
因為這些資源都是放在Jar工程的main/resources目錄中,因此就直接打進jar包了。
第三步,編寫宏
比如,原來的Tab,需要涉及到html,js,編寫後續使用的宏如下:
?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

#**
�0�2* JqueryUI Tab
�0�2* juiTab[1..1]
�0�2*�0�2�0�2�0�2�0�2�0�2 juiTabHeader[1..1]
�0�2*�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2 juiTabHeaderItem[1..n]
�0�2*�0�2�0�2�0�2�0�2�0�2 juiTabContentItem[1..n]
�0�2*#
�0�2
#macro(juiTab $juiTabId)
<div id="$juiTabId">
$bodyContent
</div>
<script>
�0�2�0�2�0�2�0�2$(document).ready(function(){
�0�2�0�2�0�2�0�2�0�2�0�2�0�2�0�2$('#$juiTabId').tabs();
�0�2�0�2�0�2�0�2});
</script>
#end
�0�2
#macro(juiTabHeader)
<ul>
$bodyContent
</ul>
#end
�0�2
#macro(juiTabHeaderItem $juiTabContentItemId)
<li>
�0�2�0�2�0�2�0�2<a href="#$juiTabContentItemId">$bodyContent</a>
</li>
#end
�0�2
#macro(juiTabContentItem $juiTabContentItemId)
<div id="$juiTabContentItemId">
$bodyContent
</div>
#end

『肆』 typeahead.js提示出來的內容怎麼不在input框的下面

這個是有系統自動控制的,下面顯示不完的時候就會顯示到上面。

『伍』 bootstrap框架里邊的scrollspy怎麼使用

1.框架
1.1全局樣式
使用HTML5的doctype,scaffolding.less中定義全局樣式,從2開始使用normalize.css,並使用reset.less進行簡化
1.2默認柵格系統
940px寬12列柵格,使用row與span[NUM]的class來控制,使用offset[NUM]來控制偏移,於non-fluid可以直接嵌套,提供了四種響應式方案
1.3流動柵格系統
基於百分比,將row改為row-fluid即可使用,內嵌注意寬度是按照父列的百分比進行計算的
1.4自定義柵格
於variables.css中改變變數,默認列12,寬60px,間隔20px,要保證響應性還得修改responsive.less中內容
1.5布局
container為940px居中,container-fluid則為流體布局
1.6 響應式設計
responsive.less中提供了一組media query:
智能手機《=480px;流式列,非固定寬度
垂直平板《=767px;流式列,非固定寬度
水平平板》=768px;42px 20px
默認》=980px; ? ? ?60px ?20px
大解析度》=1200px;70px 30px
要求添加meta標簽,<meta name=」viewport」 content=」width=device-width, initail-scale=1.0″>
有諸如.visible-phone等支持類
2.基礎CSS
2.1 排版
整個排版單位基於variables.less中@baseFontSize與@baseLineHeight兩個變數;
強調:string加粗,em傾斜,abbr縮寫【title屬性存放顯示信息,.initialism會減小縮略詞字體】,address【使用br換行】
引用:blockquote【cite屬性存放來源URL,.pull-left或right決定內容居左右】,small用於引言作者【會在內容前加入破折號】
列表:ul無序號有黑點,ul.unstyled無樣式,ol有數字序號,dl描述,dl.dl-horizontal水平描述
2.2代碼
code行級代碼,pre塊級【<>需要轉義,.pre-scrollable可以設置350px最大高度】,應用.prettyprint和.linenums來美化代碼【使用google prettify】
2.3表格
table thead【tr】 tbody【tr】tr【td或th】th【必須在thead之內】 caption;
.table行之間有水平線分割【2.0開始為默認】 .table-borderd 【邊角為圓角】.table-striped 奇偶分開【使用:nth-child ie7-8不支持】 .table-condensed 緊湊豎直方向padding減半 幾個可以組合使用
2.4表單
四種表單:.form-vertical【2.0後默認,控制項標簽文字左對齊】.form-inline【左對齊,控制項inline-block】 .form-search【文本框圓化】 .form-horizontal【左浮動,標簽與控制項居於同一行且文字右對齊】
支持控制項:文本輸入框,單選,復選,下拉,多選,上傳,文本域
控制項組:.control-group .control-label以及.controls【默認label應該與控制項在同一行?】
設計了各種控制項狀態【如focus,disabled,去除webkit的outline】,包含.error .warning .success驗證樣式
擴張控制項:.span*來指定輸入框大小,使用.input-mini或small或medium或big來指定input和select控制項大小,2.0開始對.checkbox或.radio應用.inline即可實現行級,用label.checkbox包含input[type=checkbox]即可羅列,前置或後置文本保證.add-on與input在同行, .help-inline與.help-block設置幫助文本
2.5 按鈕
可以應用到a button及input標簽上,.btn .btn-primary .btn-info等樣式【ie9不兼容】,.btn-large small mini等尺寸,.disabled類或disabled屬性可以禁用
2.6 圖標
使用.icon-前綴設置,用<i>x顯示圖標,用.icon-white顯示反白圖標,圖標定義在sprites.less中
3.組件
3.1按鈕
3.1.1按鈕組
建議一個組里只用一種元素<a>或<button>,使用.btn-group,組合.btn-toolbar包裝.btn-group即可合成工具條組件
3.1.2按鈕下拉菜單
下拉菜單也得嵌套在.btn-group中,使用dropdown-toggle與ul.dropdown-menu類,支持Bootstrap下拉插件,箭頭使用.caret,.dropdown-menu最近父標簽應用.dropup即可變為上彈菜單【會改變.caret箭頭方向】
3.2導航
3.2.1默認項
基類.nav,對齊使用.pull-left或.pull-right【依賴float】,標簽頁ul.nav-tabs,膠囊鏈接ul.nav-pills
3.2.2疊放式導航
指豎直疊放ul.nav-stacked
3.2.3下拉項
綜合使用下拉按鈕【js下拉項插件】,參考3.1.2
3.2.4導航列表
<i>使用標簽,.pider空表項顯示為水平間隔,.active選中項,.nav-header列表頭
3.2.5 標簽頁切換導航
用.tabbale的p嵌套.nav-tabs,存放容器為.tab-content,內容頁使用.tab-pane,標簽置底用.tabs-below,標簽居左.tabs-left,居右.tabs-right
3.2.6 導航條
固定導航條div.navbar與.navbar-fixed-top【必須預留40px或更多padding】,導航項ul.nav,li.pider-vertical分隔條,項目名稱a.brand,表單.navbar-form,對form.navbar-search中輸入框使用.search-query得到搜索框,下拉菜單參考3.2.3,導航條文本使用<p>,響應式嵌套在.nav-collapse.collapse並對按鈕都應有.btn-navbar【需要js切換插件】
3.2.7麵包屑導航
ul.breadcrumb
3.2.8頁碼
div.pagination>ul,同樣使用.active與.disabled,頁碼對齊使用.pagination-centered或.pagination-right,前後頁ul.pager【居於左右端li.previous與li.next】
3.3行內標簽
span.label默認樣式,span.label.label-success成功等
3.4 標號
span.badge默認樣式,span.badge.badge-success等
3.5 排版
主角單元div.hero-unit中嵌套,標題h1,可以嵌入small,
3.6 縮略項
ul.thumbnails>li.span*>a.thumbnail>img鏈接圖像,div.thumbnail塊狀內容
3.7通知
基類div.alert【2.0開始替代.alert-message】,例子:div.alert>a.close+strong,加強.alert-block提供更大的padding而.alert-heading修飾標題,語義強化.alert-error或success或info
3.8進度條
基本div.progress>div.bar[style=」width:60%」],條紋效果div.progress.progress-striped【動畫效果加上.active,使用css3漸變動畫,不支持ie】,語義加強.progress-info或success等
3.9雜項
消息牆div.well,關閉圖標a.close
4 jQuery插件
4.1對話框【bootstrap-modal.js】
$().modal({backdrop:true背景,keyboard:true支持ESC,show:true初始化顯示}) ,
觸發設置data-toggle=」modal」然後data-target=」#foo」或href=「#foo」,
對話框設置div.modal#foo即可:div.modal-header>a.close[data-dismiss=」modal」]+div.modal-body+div.modal-footer【顯示動畫效果bootstrap-transition.js,對.modal應用.fade即可】,方法.modal(「toggle」)或.modal(「show」)或.modal(「hide」),事件show,shown,hide,hidden
4.2 下拉項【bootstrap-dropdown.js】
樣式應用導航欄與膠囊鏈接,方法$().dropdown(),設置data-toggle=」dropdown」【也可以使用data-target=」#foo」或href=「#foo」來關聯下拉項與鏈接】
4.3 滾動偵測【bootstrap-scrollspy.js】
$(『#navbar』).scrollspy()
標記添加data-spy=」scroll」【導航鏈接必須有href=」#id」且對應有dom#id】,選項offset【默認為10】
4.4 可切換的標簽頁【bootstrap-tab.js】
方法$(『#myTab』).tab(『show』) 標簽頁需要設置data-target=』#id』或href=』#id』
標記添加data-toggle=」tab」或data-toggle=」pill」,
事件show與shown 【event.target指向激活標簽,event.relatedTarget指向之前激活的標簽】
4.5 工具提示【bootstrap-tooltips.js】
$(『#example』).tooltip(options) 中選項animation:true,placement:』top』,selector,title,trigger:』hover』,delay:{show:num, hide:100}
工具提示可以單獨設置data-屬性實現與js調用同樣的功能,指定一個selector即可【設置rel=」tooltip」】
方法:.tooltip(『show』)?.tooltip(『hide』)?.tooltip(『toggle』)
4.6 彈出提示【bootstrap-popover.js】
$(『#example』).popover(options)中選項animation:true,placement:』top』,selector,trigger:』hover』,title,content,delay
同樣可以單獨設置data-屬性,方法也相同
4.7 通知消息【bootstrap-alert.js】
$(「.alert」).alert()
用在通知,對關閉按鈕設置data-dismiss=」alert」即可定時關閉
方法$(「.alert」).alert(『close』),事件close closed
4.8 按鈕【bootstrap-button.js】
應用在btn與btn-group,設置data-toggle=」button」與data-toggle=」button-checkbox」與data-toggle=」button-radio」樣式
方法$().button(『toggle』) 按下
$().button(『loading』) 載入文本data-loading-text屬性中
$().button(『reset』)重置按鈕狀態
4.9 折疊手風琴【bootstrap-collapse.js】
$().collapse({toggle:false}),事件show,shown,hide,hidden
設置data-toggle=「collapse」和data-target即可變為折疊式,data-target接收一個css選擇器以選取元素添加,元素上需要添加.collapse,默認打開用.in
4.10 輪播【bootstrap-carousel.js】
$().carousel({interval:5000, pause:』hover』})
標記用data-屬性提供前後翻頁,data-slide=」prev或next」 方法.carousel(『cycle或pause或number或prev或next』) 事件slide,slid
4.11 輸入提醒【bootstrap-typeahead.js】
$().typeahead({source:[]數據源, items:8列表顯示個數, matcher:fn, sorter:fn, highlighter:fn}),
設置data-provide=」typeahead」
5. LESS
mixins.less中保存所有混合,編譯安裝npm intall -g less uglify-js lessc ./lib/bootstrap.less > bootstrap.css壓縮使用–compress,引用less.js 也可以重新編譯.less文件並進行本地存儲

『陸』 在JS內如何創建一個實體類對象、 我要往action的一個方法內傳實體類對象

business.ResultType = Ext.extend(Ext.form.ComboBox, {
editable: false,
typeAhead: true,
mode: 'local',
readonly: true,
triggerAction: 'all',
selectOnFocus: true,
plugins: new Ext.ux.plugin.TriggerfieldTooltip(),
tooltip: {
title: '結果類型',
text: '請選擇結果類型'
},
valueField: 'ID',
displayField: 'NAME'蠢豎,

initComponent: function() {
this.store = new Ext.data.SimpleStore({
fields: ['ID', 'NAME'],
data: [
['10', '1],
['凳態20', '2'],
['棗檔源30', '源'],
['40', '訪'],
['50', '向'],
['60', '已']
]
});
business.ResultType.superclass.initComponent.call(this);

}
});

『柒』 前端框架有什麼用

web前端框架是做什麼的? 5分
前端框架一般指用於簡化網頁設計的框架,比如,jquery,extjs,bootstrap等等,這些框架封裝了一些功能,比如html文檔操作,漂亮的各種控制項(按鈕,表單等等)。

使用前段框架可以降低界面開發周期和提高界面的美觀性。

有些框架比較輕量,比如jquery,有些框架比較重量,比如extjs。一般來說重量的框架會封裝更多的功能,比如extjs,封裝的grid控制項有很強的數據展鬧困示和操作功能。
前端框架是什麼?有什麼用、有什如備么好處?
可以簡單的理解成是:使用廣泛的前端開發套件,可以幫助你快速的網站

前段框架的好處:對於互聯網的產品而言,前端用戶體驗往往決定了一款產品的競爭力和吸引力;而對於前端工程師來說,考慮的問題更為復雜,他們既要為網站上提供的產品和服務實現一流的Web頁面、優化代碼,保證體驗的最佳,更要考慮與市面上各大瀏覽器的兼容性,還需顧及Web前端表現層和前後端交互的架構,以及模塊化、通用類庫、框架編寫等一系列問題,由此提升前端開發的效率,降低開發成本和周期。
html的框架到底是用來幹嘛的?什麼時候用到?
你接觸了後台就知道了,這樣可以做到頁面地址不需要變動, 但卻可以利用iframe的tagert屬性把顯示數據的頁麵包含進來, div就不行,因為它沒有這個target屬性,文件獨立出來方便重用,且結構清晰;
前端開發框架有哪些
首先我想說明一下,我們通常說的js不是框架,是語言,即javascript,據最新世界編程語言排行榜來看,已經上升到了第7位,發展迅猛,其標準是ECMAScript,現在基本上是基於ECMAScript5。jQuery是用js寫的框架,其在DOM操作上有很明顯的優勢,也是時下很常用的一個js框架。

至於之外還要學習那些框架呢?

如果你說的是js框架,建議先掌握好jQuery,然後還有很多的,比如樓上提到的extjs,近幾年比較流行的AngularJS,基於移動端考慮的輕量級仿jquery框架zepto,還有jquery mobile,還有適合寫後端或服務端的node,等等。如果是web前端框架,就不僅僅是涉及的js了,還有html和css。個人覺得只有這三種語言都涉及到的框架才能說得上是web前端框架。現在比較火的是Bootstrap,還有Foundation,比較古老的有jqueryUI,液橡念easyUI等等,還有其他很多很多。如果還有算上處理方案及版本升級代碼迭代等,就要用到網路團隊研發的fis這種了。其實內容真的很多很多,前端任重而道遠啊~
web前端框架是什麼意思 10分
前端架構師必須懂得真正的編程知識,而這正是很多自封為前端架構師的人所缺乏的。我的意思不是能夠剪切粘貼改進代碼就行了,而是能夠跟老練的工程師商討如何能夠最好地結合前端。

這就是說,前端架構師需要真正理解結構遭遇商業邏輯的問題。如果工程師說某些東西使用ASP.Net DataGrid是不可能實現的,前端架構師必須能夠解釋如何與為何要使用DataList或Repeater取代,解釋為何DataGrid在該情景下是個錯誤的選擇……

這只是個例子,問題還在於僅知道客戶端編程也是不夠的。能夠使用與工程師相同的術語,能夠討論(前後端)關鍵集成的最佳解決方案,這是絕對必須的。

斷線的風箏

我們今天正處在一個不妙的處境中,原因在於幾乎沒有人能夠為前後端的溝壑搭橋。一般工程師不會有興趣或實踐標記,CSS, 或DOM腳本編程,大部分客戶端開發者也沒有與後端技術協作的經驗。幾周入門PHP不會成為程序員,幾周入門XHTML也不會成為真正的客戶端開發者。

罪魁禍首

我首先想到的十足例子是,ASP.Net完全漠視Web標准,同樣地,web氛圍(我們指表格和佔位gif)讓Web標准郁悶。企業項目的大多數框架輸出的標記,即使使用1999年的標准來衡量,都是糟糕無比的。

如此巨大和「專業」的產品怎麼能才夠不忽視,按理說是整個項目最簡單的方面?只有靜態代碼。理由是,基於技術的立場衡量產品,結構,CSS和其他客戶端技術都是「事後諸葛亮」。表現邏輯,結構和行為混雜,壓根無助於無障礙,Web標准,或者前端技術干凈的分離。擡起你的頭來,就在2006,這些都成受歡迎的慣例了。

總結

如果這個世界上姿態最鮮明的產品和項目都如此低劣的方式來處理事情,其他的還有什麼好說?毫無疑問,我們需要前端架構師,而且就在昨天。

歸結於歸結,我們有一堆相互關聯的技術,很少人能夠埋頭鑽研它們之間的關系,這很不幸。正確做事的真正價值在於容易的維護和長期的適應性。雖然在關鍵時刻,有些方式更容易選擇其他的方法和拼湊起另外的東西。對某些人來說,這可能是可接受的做事方式。但是,對我們大部分人來說,這是拙劣的抉擇,也非常不專業。

我交給你去想了。我假設你把車交給技工修理,修好了時候,瞧瞧引擎罩內大量的輸送管,我不知道你對技工作何感想?
為什麼需要自己實現前端框架
前端對框架(庫)的大小更敏感

前端內容的渲染和交互效果的實現如果依賴JS框架(庫),需要先將這些框架(庫)下載到客戶端,此時框架(庫)的大小將直接影響到前端的首屏渲染速度。框架(庫)越小,載入的速度就越快,而隨著功能的越來越全,框架(庫)必然會越來越大,要保證性能,需要制定載入策略。

便於制定載入策略

解決框架(庫)變大的常見載入策略是將框架分為核心部分和擴展部分,核心部分在首屏渲染前必須下載完成,並且這部分的載入文件盡可能的少和小,擴展部分則可以模塊化方式來懶載入。

核心部分的JS在發布時,可對文件合並,數量盡可能少,單個文件在gzip壓縮後最好不要超過20K。核心部分可以是實現「JS語言擴展(面向對象),DOM操作API,數據交互方法(ajax),導航策略,模塊化底層實現,事件底層實現,模版解析」等。擴展部分一般是一些可非同步載入的UI組件,例如:輸入控制項、彈出窗、動畫API、文件上傳及預覽、圖表控制項、富文本編輯器等。

上面的實現模式,在主流的JS框架(庫)中,有三類選擇:一類是以ExtJS為代表的大而全的框架(庫),這類框架雖然功能滿足,但往往無法拆分為核心部分和擴展部分來載入,因此基本不予考慮;一類是相對輕量的YUI3、Dojo等框架(庫);一類是近來流行的前端MV*系列Backbone、Ember、Angular,這類在充當核心部分時,還需要組合Underscore、RequireJS,jQuery等第三方庫。

後面兩類可以滿足要求,但個人覺得不是完美的方案,因為在開發實際產品時,將這兩類作為核心部分時,往往裡面有很多是不需要的,而還有些需要自己來額外補充近來,可以是自己開發,也可以集成第三方的實現。而核心部分框架(庫)如果是自己實現,則可以保證在功能完整的情況下,不多出其它的東西,載入的JS可以控制到最小,而且代碼風格也統一。

便於擴展

前端代碼與用戶的交互直接相關,而交互的設計變化和不確定性非常大,現成的第三方實現往往難以直接利用,需要改造。有時改造第三方的框架,先要非常熟悉框架,當這個框架比較復雜時,這樣的工作量和難度就大大加大了。而自實現的框架(庫)則可以根據需要任意擴展,可以根據需求制定對應的規范和API。
前端開發框架有哪些
1. Bootstrap

Boostrap絕對是目前最流行用得最廣泛的一款框架。它是一套優美,直觀並且給力的web設計工具包,可以用來開發跨瀏覽器兼容並且美觀大氣的頁面。它提供了很多流行的樣式簡潔的UI組件,柵格系統以及一些常用的JavaScript插件。

Bootstrap是用動態語言LESS寫的,主要包括四部分的內容:

腳手架——全局樣式,響應式的12列柵格布局系統。記住Bootstrap在默認情況下並不包括響應式布局的功能。因此,如果你的設計需要實現響應式布局,那麼你需要手動開啟這項功能。

基礎CSS——包括基礎的HTML頁面要素,比如表格(table),表單(form),按鈕(button),以及圖片(image),基礎CSS為這些要素提供了優雅,一致的多種樣式。

組件——收集了大量可以重用的組件,如下拉菜單(dropdowns),按鈕組(button groups),導航面板(navigation control)——包括:tabs,pills,lists標簽,麵包屑導航(breadcrumbs)以及頁碼(pagination),縮略圖(thumbnails),進度條(progress bars),媒體對象(media objects)等等。

JavaScript——包括一系列jQuery的插件,這些插件可以實現組件的動態頁面效果。插件主要包括模態窗口(modals),提示效果(tool tips),「泡芙」效果(popovers),滾動監控(scrollspy),旋轉木馬(carousel),輸入提示(typeahead),等等。

Bootstrap已經足夠強大,能夠實現各種形式的 Web 界面。為了更加方便地利用Bootstrap進行開發,很多工具和資源可以用來配合使用,下面列舉了其中的一部分工具和資源。

jQuery UI Bootstrap —— 對於jQuery和Bootstrap愛好者來說這是個非常好的資源,能夠把 Bootstrap的清爽界面組件引入到jQuery UI中。

jQuery Mobile Bootstrap Theme —— 和上面提到的jQuery UI主題類似,這是一個為jQuery Mobile建立的主題。如果你想讓用Bootstrap開發的網站在手機端也可以優雅訪問,那麼這個資源對你來說很方便易用。

Fuel UX —— 它為Bootstrap添加了一些輕量的JavaScript控制項。Fuel UI 安裝,修改,更新以及優化都很簡單方便。

StyleBootstrap. —— Bootstrap提供了自己的幾種界面風格,StyleBootstrap提供了更多的配色選項,並且你可以給每個組件都應用不同的配色。

BootSwatchr —— 利用這個工具你可以立刻查看主題修改後的效果。對於每一次變動的效果,這個應用都會生成一個唯一的URL方便你與他人分享,你也可以在任意時刻修改你的主題。

Bootswatch —— 提供大量免費的Bootstrap主題。

Bootsnipp —— 在線前端框架交互組件製作工具,是一個供給設計師和開發者的基於Bootstrap HTML/CSS/JavaScript 架構的免費元素。

LayoutIt —— 通過界面拖放生成器簡便快捷地創建基於Bootstrap的前端代碼。通過拖放動作將Bootstrap風格的組件加入到你的個人設計里並且可以方便地修改他們的屬性,......
前端開發框架有哪些
1. Bootstrap Boostrap絕對是目前最流行用得最廣泛的一款框架。它是一套優美,直觀並且給力的web設計工具包,可以用來開發跨瀏覽器兼容並且美觀大氣的頁面。它提供了很多流行的樣式簡潔的UI組件,柵格系統以及一些常用的JavaScript插件。 Bootst...
前端框架用哪個好
1、flex

Apache基金會今天發布了Flex 4.8版本,這是Adobe將Flex捐獻給Apache基金會後發布的第一個版本。

需要注意的是,Flex目前還在孵化階段,還不是Apache的正式項目,Flex 4.8也不是一個正式的Apache版本。

Apache稱,該版本標志著Flex新時代的開始,Flex的未來將由社區來驅動,而不是由一個公司驅動。開發者可以通過貢獻代碼,來幫助改進Flex,如修復bug、增加功能等。

從Macromedia賣給Adobe,然後又捐給apache,不知道搞什麼名堂。不過還好沒有經過大幅重構,否則就真的是悲哀了!

2、extjs

ExtJS是一種主要用於創建前端用戶界面,是一個基本與後台技術無關的前端ajax框架。

功能豐富,無人能出其右。

無論是界面之美,還是功能之強,ext的表格控制項都高居榜首。

華麗的界面,靈活的功能,還有開發工具都是配套的,但有個最大的問題,用就得花錢!

3、easyui

easyui幫助你構建你的web應用更加容易。

它是一個基於jquery的插件,開發出來的一套輕量級的ui框架,非常小巧而且功能豐富。

但是她有一個最大的問題就是代碼只能找到以前的開源的版本,到了1.2以後的版本源代碼都是經過混淆的,如果遇到問題修改起來會非常麻煩!不過一個比較大的優勢是開源免費,並且界面做的還說的過去!

4、MiniUI

又一個基於jquery的框架,開發的界面功能都很豐富。

jQuery MiniUI - 快速開發WebUI。

它能縮短開發時間,減少代碼量,使開發者更專注於業務和服務端,輕松實現界面開發,帶來絕佳的用戶體驗。

使用MiniUI,開發者可以快速創建Ajax無刷新、B/S快速錄入數據、CRUD、Master-Detail、菜單工具欄、彈出面板、布局導航、數據驗證、分頁表格、樹、樹形表格等典型WEB應用系統界面。

界面做的挺不錯,功能也挺豐富,但是有兩個比較大的問題,一個是收費,一個是沒有源碼,說白了,不開源!基於這個開發如果想對功能做擴展就需要找他們的團隊進行升級!

5、jQuery UI

jQuery UI 是一套 jQuery 的頁面 UI 插件,包含很多種常用的頁面空間,例如 Tabs(如本站首頁右上角部分) 、拉簾效果(本站首頁左上角)、對話框、拖放效果、日期選擇、顏色選擇、數據排序、窗體大小調整等等非常多的內容。

功能非常全面,界面也挺漂亮的,可以整體使用,也可以分開使用其中的幾個模塊,免費開源!

6、DWZ

DWZ富客戶端框架(jQuery RIA framework), 是中國人自己開發的基於jQuery實現的Ajax RIA開源框架.

設計目標是簡單實用,快速開發,降低ajax開發成本。

歡迎大家提出建議,我們將在下一版本中進一步調整和完善功能.共同推進國內整體ajax開發水平。

畢竟是國產的,支持一下,而且源碼完全公開,可以選擇一下!不過性能怎麼樣不敢確定!

7、GWT

Google 網頁工具包——GWT 提供了一組基於Java語言的開發包,這個開發包的設計參考Java AWT包設計,類命名規則、介面設計、事件監聽等都和AWT非常類似。熟悉Java AWT的開發者不需要花費多大的力氣就能夠快速的理解GWT開發工具包,將更多地時間投入到GWT應用的開發過程中。

你不用......
web前端開發框架有哪些
bootstrap是twitter出的一款不錯的UI框架,或者與其說是框架不如說是類庫(lib),當然這里邊牽扯到一個「究竟什麼是框架什麼是類庫?」的問題,我們暫時不談。畢竟是有大公司背景的代碼堆,我覺得沒什麼「落伍」可言。

angular是前兩年之內突然火得一塌糊塗的一個fe框架,這個我覺得可以算的上是真正意義上的框架了,MVVM雙向綁定,包括它擁有足夠完善的社區、生態,甚至chrome上都有很多好用的相關插件(這一點可以說是佔了google出品的光),比較完整的大型項目都是可以考慮引入的。但如果你的網站只是做一些輕量級的東西,殺雞焉用宰牛刀吧我覺得。

backbone主要針對的MVC中的M層,至少我是這么理解的。對UI層它幾乎沒什麼太多的限制,一方面給出了coder自由度進行發揮,另一方面也等於在這方面框架本身對開發沒提供什麼太大的幫助。我覺得這更像是一個高手向的框架,另外對於underscore前端模板那一套東西,說實話作為一名php java啥都能寫的FE我始終覺得這套東西有那麼一種純JS工程師的一廂情願的意味。這是個人看法了,不一定準確,況且有人會搬出ajax動態渲染時 前端模板的作用來反駁我,別急著反駁,至少往下看完我說的話。

相比之下,react可以說是一個在MVC中V層做的十分出色和新穎的框架了,獨特的jsx編譯機制就已經讓你的代碼變得高大上了,我是覺得這個類庫在UI層做的更徹底更專業,或者說讓FE的代碼更專業了。更何況,react比angular更年輕,而且同樣擁有大公司背景,react native一出更是讓JS工程師的地位取得了革命性的提升,(不要跟我提phonegap,用過兩個東西後你會明白,react打包的app性能甩phonegap幾條街沒問題)。另外既然樓主提到了之前的網站是bootstrap,不妨可以看一看react-bootstrap這個東西,或許這就是你想要的。

『捌』 typeahead 怎麼把value轉為id

第一,簡單使用 首先並歷斗,最簡單的使用方式,就是直接在標記中聲明,通過 data-provide="typeahead"來聲明這是一個 typeahead 組件,通過 data-source= 來提供數據。當然了,你還絕磨必須提供爛團 bootstrap-typeahead.js 腳本。

『玖』 typeahead.bundle.min.js bloodhound怎麼使用

數據源:
Local:數組
prefectch:json
remote等方式

『拾』 Extjs怎麼實現下拉框多選

|

1、擴展js類庫,在項目中建立一個 js文件,命名為:xxx.js 其代碼為

if('function'!==typeofRegExp.escape)
{
RegExp.escape=function(s)
{
if('string'!==typeofs)
{
returns;
}
returns.replace(/([.*+?^=!:${}()|[]/\])/g,'\$1');
};
}

Ext.ns('Ext.form');

Ext.form.MultiSelect=Ext.extend(Ext.form.ComboBox,
{
checkField:'checked',
multi:true,
separator:',',
initComponent:function()
{
if(!this.tpl)
{
this.tpl='<tplfor=".">'+'<divclass="x-combo-list-item">'
+'<imgsrc="'+Ext.BLANK_IMAGE_URL+'"'
+'class="ux-MultiSelect-iconux-MultiSelect-icon-'
+'{[values.'+this.checkField+'?"checked":"unchecked"'
+']}">'
+'{[values.'+this.displayField+']}'
+'</div>'
+'</tpl>';
}

Ext.form.MultiSelect.superclass.initComponent.apply(this,arguments);

this.on(
{
scope:this,
beforequery:this.onBeforeQuery,
blur:this.onRealBlur
});

this.onLoad=this.onLoad.createSequence(function()
{
if(this.el)
{
varv=this.el.dom.value;
this.el.dom.value='';
this.el.dom.value=v;
}
});
},
initEvents:function()
{
Ext.form.MultiSelect.superclass.initEvents.apply(this,arguments);
this.keyNav.tab=false;
},
beforeBlur:function()
{
},
postBlur:function()
{
},

clearValue:function()
{
this.value='';
this.setRawValue(this.value);
this.store.clearFilter();
this.store.each(function(r)
{
r.set(this.checkField,false);
},this);
if(this.hiddenField)
{
this.hiddenField.value='';
}
this.applyEmptyText();
},
getCheckedDisplay:function()
{
varre=newRegExp(this.separator,"g");
returnthis.getCheckedValue(this.displayField).replace(re,this.separator+'');
},
getCheckedValue:function(field)
{
field=field||this.valueField;
varc=[];
varsnapshot=this.store.snapshot||this.store.data;
snapshot.each(function(r)
{
if(r.get(this.checkField))
{
c.push(r.get(field));
}
},this);

returnc.join(this.separator);
},
onBeforeQuery:function(qe)
{
qe.query=qe.query.replace(newRegExp(RegExp.escape(this.getCheckedDisplay())+'['+this.separator+']*'),'');
},
onRealBlur:function()
{
this.list.hide();
varrv=this.getRawValue();
varrva=rv.split(newRegExp(RegExp.escape(this.separator)+'*'));
varva=[];
varsnapshot=this.store.snapshot||this.store.data;

Ext.each(rva,function(v)
{
snapshot.each(function(r)
{
if(v===r.get(this.displayField))
{
va.push(r.get(this.valueField));
}
},this);
},this);
this.setValue(va.join(this.separator));
this.store.clearFilter();
},
onSelect:function(record,index)
{
if(this.fireEvent('beforeselect',this,record,index)!==false)
{
record.set(this.checkField,!record.get(this.checkField));

if(this.store.isFiltered())
{
this.doQuery(this.allQuery);
}

if(this.multi)
{
if(record.get("key")=="---"&&record.get(this.checkField))
{
this.setValue("---");
}
else
{
this.setValue(this.getCheckedValue());
}
}
else
{
this.clearValue();
this.value=record.get(this.valueField);
this.setRawValue(record.get(this.displayField));
this.list.hide();
}

this.fireEvent('select',this,record,index);
}
},
setValue:function(v)
{
if(v)
{
v=''+v;
if(this.valueField)
{
this.store.clearFilter();
this.store.each(function(r)
{
varchecked=!(!v.match('(^|'+this.separator+')'
+RegExp.escape(r.get(this.valueField))
+'('+this.separator+'|$)'));
r.set(this.checkField,checked);
},this);
this.value=this.getCheckedValue();
this.setRawValue(this.getCheckedDisplay());
if(this.hiddenField)
{
this.hiddenField.value=this.value;
}
}
else
{
this.value=v;
this.setRawValue(v);
if(this.hiddenField)
{
this.hiddenField.value=v;
}
}
if(this.el)
{
this.el.removeClass(this.emptyClass);
}
}
else
{
this.clearValue();
}
},
selectAll:function()
{
this.store.each(function(record)
{
record.set(this.checkField,true);
},this);
this.doQuery(this.allQuery);
this.setValue(this.getCheckedValue());
},
deselectAll:function()
{
this.clearValue();
}
});
Ext.reg('multiSelect',Ext.form.MultiSelect);

2、在ext-all.css文件最後,加入css樣式

.ux-MultiSelect-icon{width:16px;height:16px;float:left;background-position:-1px-1px!important;background-repeat:no-repeat!important;}
.ux-MultiSelect-icon-checked{background:transparenturl(../images/default/menu/checked.gif);}
.ux-MultiSelect-icon-unchecked{background:transparenturl(../images/default/menu/unchecked.gif);}

3、使用

varDepartUserStore=newExt.data.Store(
{
proxy:newExt.data.HttpProxy(
{
url:'/Web/Manage/DeskTop/JSON/ScheleManager/GetSimpleDepartUserInfo.aspx'
}),
//讀取Json
reader:newExt.data.JsonReader(
{totalProperty:"totalCount",root:"root"},
[
{name:'UserId',type:'int'},
{name:'UserName',type:'string'}
])
});

varDepartUserCbox=newExt.form.MultiSelect(
{
fieldLabel:'姓名',
labelStyle:'width:80px',
width:150,
editable:false,
id:'DepartUserDS',
hiddenName:'DepartUserIdDS',
store:DepartUserStore,
emptyText:'--請選擇--',
allowBlank:false,
blankText:'請選擇',
mode:'remote',
displayField:'UserName',
valueField:'UserId',
triggerAction:'all',
selectOnFocus:true,
listWidth:200
});

DepartUserStore.on('load',function()
{
DepartUserCbox.selectAll();//全選
});

DepartUserStore.load();
閱讀全文

與typeaheadminjs相關的資料

熱點內容
android藍牙傳文件在哪裡 瀏覽:354
蘋果6s軟解是真的嗎 瀏覽:310
c語言代碼量大 瀏覽:874
最新網路衛星導航如何使用 瀏覽:425
以下哪些文件屬於圖像文件 瀏覽:774
zycommentjs 瀏覽:414
確認全血細胞減少看哪些數據 瀏覽:265
文件有哪些要求 瀏覽:484
cad打開時會出現兩個文件 瀏覽:65
什麼是轉基因網站 瀏覽:48
手柄設備有問題代碼43 瀏覽:921
怎麼他么怎麼又網路了 瀏覽:649
java會出現內存泄露么 瀏覽:617
蘋果4s鎖屏後怎麼還顯示歌曲 瀏覽:207
鴻蒙系統文件管理哪些可以刪除 瀏覽:550
ubuntuqt創建工程沒有配置文件 瀏覽:126
網站登錄變成其他網站怎麼處理 瀏覽:202
ug數控編程學校有哪些 瀏覽:203
java圖片上傳顯示 瀏覽:402
ppt的文件名後綴 瀏覽:902

友情鏈接