导航:首页 > 编程语言 > 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相关的资料

热点内容
桌面云配置文件分离 浏览:505
iphone5如何升级4g网络 浏览:5
团购是在哪个app 浏览:897
打开多个word文档图片就不能显示 浏览:855
腾讯新闻怎么切换版本 浏览:269
app安装失败用不了 浏览:326
桌面文件鼠标点开会变大变小 浏览:536
手机误删系统文件开不了机 浏览:883
微信兔子甩耳朵 浏览:998
android蓝牙传文件在哪里 浏览:354
苹果6s软解是真的吗 浏览:310
c语言代码量大 浏览:874
最新网络卫星导航如何使用 浏览:425
以下哪些文件属于图像文件 浏览:774
zycommentjs 浏览:414
确认全血细胞减少看哪些数据 浏览:265
文件有哪些要求 浏览:484
cad打开时会出现两个文件 浏览:65
什么是转基因网站 浏览:48
手柄设备有问题代码43 浏览:921

友情链接