Giter VIP home page Giter VIP logo

terryz / selectpage Goto Github PK

View Code? Open in Web Editor NEW
739.0 33.0 194.0 653 KB

A simple style and powerful selector, including ajax remote data, autocomplete, pagination, tags, i18n and keyboard navigation features

Home Page: https://terryz.github.io/selectpage

License: MIT License

JavaScript 75.91% SCSS 24.09%
jquery selection select-multiple pagination javascript jquery-plugin autocomplete ajax-search keyboard tagsinput

selectpage's Introduction

SelectPage

SelectPage

A simple style and powerful selection jQuery plugin, including ajax remote data, autocomplete, pagination, tags, i18n and keyboard navigation features

996.icu




Examples and Documentation

Explorer on

简体中文文档

The Vuejs version: v-selectpage

SelectPage

Features

  • a jQuery(1.x) plugin
  • highly customized
  • compatible with no UI framework of the program, but it is recommended to use at least normalize.css
  • quick search item by input autocomplete
  • use keybord to quick navigate
  • multiple select by tag form
  • screen edges handle
  • custom content render
  • i18n supports, provide 6 languages
  • server side data supports

Browsers support

IE / Edge
IE / Edge
Firefox
Firefox
Chrome
Chrome
Safari
Safari
Opera
Opera
IE8, IE9, IE10, IE11, Edge Firefox 18+ Chrome 49+ Safari 10+ Opera 36+

Plugin Preview

Multiple Selection with Tags form

SelectPage1

Regular select mode ( single selection )

SelectPage

List only ( pagination bar close, disable typing to quick search, select only )

SelectPageList

Installation

Download SelectPage plugin zip file by last release, or click me to download SelectPage

or use NPM

npm install selectpage

Usage

As you can see in the Demo Page, you will need to include:

  • jQuery library (1.10.2+), untest on jquery2.x & 3.x
  • The JavaScript file selectpage.js (or its minified version selectpage.min.js)
  • The css file selectpage.css

Including files

<!-- jQuery library -->
<script type="text/javascript" src="jquery.min.js" ></script>

<link rel="stylesheet" href="selectpage.css" type="text/css">
<script type="text/javascript" src="selectpage.js" ></script>

HTML input element set

the SelectPage plugin just need put a input tag in the page

<input type="text" id="selectpage" >

Javascript init plugin

// defined a array (the server side returned data format was same like that)
// Array[{Object},{...}]
var data = [
  {id: 1, name: 'Chicago Bulls', desc: '芝加哥公牛' },
  {id: 2, name: 'Cleveland Cavaliers', desc: '克里夫兰骑士' },
  {id: 3, name: 'Detroit Pistons', desc: '底特律活塞' },
  {id: 4, name: 'Indiana Pacers', desc: '印第安纳步行者' }
]
// init SelectPage
$('#selectpage').selectPage({
  showField : 'desc',
  keyField : 'id',
  data : data
})

Stargazers over time

Stargazers over time

Options

The plugin initialize options

data

  • type: string | object
  • default: undefined

data source (string:ajax search URL | object:JSON format array)

// serverside request url address
$('#selectpage').selectPage({
  data: 'https://some-site/some-route'
})

// JSON format array
var data = [{a:1,b:2,c:3},{...}]
$('#selectpage').selectPage({
  data: data
})

lang

  • type: string
  • default: 'cn'

plugin language

code language
cn chinese
en english
de german
es spanish
ja japanse
pt-br Brazilian Portuguese

multiple

  • type: boolean
  • default: false

whether it is multi-select mode(use tags mode)

pagination

  • type: boolean
  • default: true

paging or not

listSize

  • type: number
  • default: 10

the list shows the number of items, and the other items are displayed in a scroll bar,it only work on pagination : false

multipleControlbar

  • type: boolean
  • default: true

whether to enable the multi-select mode control button area,only work on multiple: true

maxSelectLimit

  • type: number
  • default: 0

maximum number of selections in multi-select mode,0 is unlimited

selectToCloseList

  • type: boolean
  • default: true

is close list after item select,it only work on multiple:true

initRecord

  • type: string
  • default: undefined

the initial value of the plugin, The value will match the option.keyField field, and if it matches, it will be automatically selected and highlighted

dbTable

  • type: string
  • default: 'tbl'

use this parameter to set the corresponding data table name in server side(ajax) mode

keyField

  • type: string
  • default: 'id'

value field, usually the contents of the field will be automatically saved in the hidden domain

showField

  • type: string
  • default: 'name'

the result is used to display the name of the attribute

searchField

  • type: string
  • default: undefined

query field, set server side query field when data source is server side mode, if not set default use of option.showField

andOr

  • type: string
  • default: 'AND'

multiple keywords search type ('AND' or 'OR')

orderBy

  • type: string[]
  • default: undefined

result data sort type, default use showField specified field

$('#selectpage').selectPage({
  ...
  orderBy : ['id desc'] // use id field sort desc
})

pageSize

  • type: number
  • default: 10

the number of records per page

params

  • type: function (): object
    • return object
  • default: undefined

send request params for server side data source(ajax)

$('#selectpage').selectPage({
  ...
  params : function() {
    return {
      name: 'aa',
      sex: 1
    }
  }
})

formatItem

  • type: function (data: object): string
    • data object row data object format
    • return string
  • default: undefined

list item display content formatting

$('#selectpage').selectPage({
  ...
  formatItem : function(data) {
    return data.a + '(' + data.b + ')'
  }
})

focusDropList

  • type: boolean
  • default: true

when input box get focus,drop the list

autoSelectFirst

  • type: boolean
  • default: true

whether to automatically select the first item in the list (enter the keyword query mode, use the mouse directly does not trigger)

autoFillResult

  • type: boolean
  • default: true

whether to automatically fill the content, if the list item is highlighted, in the focus away from the control, automatically set the item for the selected content

noResultClean

  • type: boolean
  • default: true

enter the keyword to query and no item match,when focus leave plugin,whether to clear enter keywords

selectOnly

  • type: boolean
  • default: false

select only mode,the input box can not enter any word

inputDelay

  • type: number
  • default: 0.5(second)

enter the keyword query delay, work on server side(ajax) mode

eSelect

  • type: function (data: object|object[]): void
    • data object | array selected row or rows data(json)
  • default: undefined

item selected callback

$('#selectpage').selectPage({
  ...
  eSelect : function(data) {
    console.log(data)
  }
})

eOpen

  • type: function (self: object): void
    • self object plugin inner object
  • default: undefined

before show up result list callback

$('#selectpage').selectPage({
  ...
  eOpen : function(self) {
    console.log(self)
  }
})

eAjaxSuccess

  • type: function (data: object): object
    • data object server side return data(json)
    • return object convert to SelectPage required data format
  • default: undefined

in server side mode, this is the callback function when request success, the role of the callback is used to custom processing of the return data

server side return data for example

{
  "values": {
    "gridResult": {
      "pageSize": 10,
      "pageNumber": 1,
      "totalRow": 11,
      "totalPage": 2,
      "listData": [
        { "name": "name1", "id": "1" },
        { "name": "name2", "id": "2" },
        { ... }
      ]
    }
  }
}

eAjaxSuccess required data format

{
  list: object[],  // rows data
  totalRow: number // total record count number
}

then eAjaxSuccess code for example below

$('#selectpage').selectPage({
  ...
  data: 'https://some-site/some-route',
  eAjaxSuccess : function(data) {
    var dataNode = data.values.gridResult
    return {
      list : dataNode.listData,
      totalRow : dataNode.totalRow
    }
  }
})

eTagRemove

  • type: function (tags: object[]): void
    • tags object[] removed tags raw data
  • default: undefined

this callback function is used to close tag, when multiple : true

$('#selectpage').selectPage({
  ...
  eTagRemove : function(tags) {
    console.log(tags)
  }
})

API

selectPageClear

  • selectPageClear(): void

clear all select items

$('#selectpage').selectPageClear()

selectPageRefresh

  • selectPageRefresh(): void

refresh plugin selected items info

$('#selectpage').val(20) // modify selected by id used javascript
$('#selectpage').selectPageRefresh() // refresh selection item info

selectPageData

  • selectPageData(data: object): void
    • data array new data, the data format is same to plugin data source

change plugin data source,only work on json data source mode

var newdata = [
  { a: 1, b: 11, c: 111 },
  { a: 2, b: 22, c: 222 },
  { ... }
]
$('#selectpage').selectPageData(newdata)

selectPageDisabled

  • selectPageDisabled(status?: boolean): void|boolean
    • status boolean(optional) set disabled stauts. true to disabled, false to enabled
    • return boolean(optional) plugin disabled status

get plugin disabled status or set plugin status to disabled / enabled

// get plugin disabled stuats
if($('#selectpage').selectPageDisabled()) {
  // set plugin to enabled
  $('#selectpage').selectPageDisabled(false)
}

selectPageText

  • selectPageText(): string
    • return string selected items string content

get plugin selected items text

alert($('#selectpage').selectPageText())

selectPageSelectedData

  • selectPageSelectedData(): object[]
    • return object[] selected items raw datas

get selected items raw data

console.log($('#selectpage').selectPageSelectedData())

License

FOSSA Status

selectpage's People

Contributors

fossabot avatar terryz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

selectpage's Issues

自定义下拉选项格式

我有这么一个需求:需要在每个下拉选项后面添加 新增、修改、删除的操作(同时这些操作需要和后台服务交互以及有可能会再次弹出一些窗体)。通过阅读文档我发现
formatItem这个function应该可以实现,于是我进行了尝试,并在尝试过程中发现一些问题。下面是我遇到的问题。

环境:

开发工具:HBuilder 7.2.2

SelectPage: 2.14

JQuery:2.2.4

第一次尝试:

$('#class').selectPage({
			    showField : 'name',
			    keyField : 'id',
			    data : clazz,
			    pageSize:10,
			    formatItem:function(data) {
			    	var html = "<li pkey='>" + data.id +  "' title='" + data.name  +  "' style='float:left'>"+data.name+ "</li><a href='http://www.baidu.com'>delete</a>"
			    	return html;
			    }
			});

运行后发现页面能够显示数据且显示delete标签。但是点击无效果。同时在选择后会将 data.name的数据和delete 拼成一个字符串显示在输入框里。像这样: 一年纪delete。通过跟踪页面的html构成,发现在页面里是这样生成数据的:

<li pkey="24" title="<li pkey='>24' title='一年级' style='float:left'>一年级</li> <a href=''>delete</a>" class="">
    <li pkey=">24" title="一年级" style="float:left">一年级</li>
    <a `href="">delete</a>
</li>

注意title内容。这说明SelectPage会自己生成li作为行,于是我进行了第二次的尝试,修改代码为这样:

formatItem:function(data) {
			    	var html = "<a href='http://www.baidu.com'>delete</a>"
			    	return html;
			    }

这时运行后的页面没有data.name数据,出现了delete标签,点击后还是无点击效果。跟踪页面html结构如下:

<li pkey="24" title="<a href='http://www.baidu.com'>delete</a>" class="">
 <a href="http://www.baidu.com">delete</a>
</li>

这里我基本搞明白生成规则,那么我如何能实现类似这样的页面代码呢?

<li pkey=">24" title="一年级" style="float:left">一年级
 <a href="http://www.baidu.com">delete</a>
</li>

在点击delete时能执行我的js方法或我的url,在点击一年级时和普通的下拉列表一样。

New version not supported for jquery 3.2.1

selectpage.js:1568 Uncaught TypeError: pagebar.find(...).size is not a function
at buildPageNav (selectpage.js:1568)
at SelectPage.setNavi (selectpage.js:1597)
at SelectPage.prepareResults (selectpage.js:1538)
at SelectPage.searchForJson (selectpage.js:1490)
at SelectPage.suggest (selectpage.js:1276)
at showList (selectpage.js:865)
at HTMLInputElement. (selectpage.js:877)
at HTMLInputElement.dispatch (jquery-3.2.1.min.js:3)
at HTMLInputElement.q.handle (jquery-3.2.1.min.js:3)
at HTMLInputElement.trigger (jquery-3.2.1.min.js:3)

几个小疑问

感谢作者这么优秀的控件,初步尝试过程中有几个小疑问:
1.AJAX获取数据时似乎只能是POST;
2.AJAX获取数据时,有最少输入字符数的设置么,超过该长度才去抽取数据?
3.当输入关键词时,自动按空格分段,是否可以关闭此功能的配置,或者自定义分隔符?

谢谢~

请问SelectPage如何动态刷新数据源

目前我需要根据type来进行不同的请求获取不同的数据源,我发现selectPage每初始化一次,就会创建一个。当前动态刷新数据源的方法不?

服务端数据模式的联动的数据格式问题请教

var lastProvince = '';
//省份选择器初始化
$('#selectPageProvince').selectPage({
showField: 'name',
keyField: 'id',
data: 'http://aaa.com/loadProvince',
//选择省份时,清空城市列表已选中的项目
eSelect: function (data) {
if(data && lastProvince !== data.id){
$('#selectPageCity').selectPageClear();
}
}
});
//城市选择器的初始化,使用空数据进行初始化
$('#selectPageCity').selectPage({
showField: 'name',
keyField: 'id',
data: 'http://aaa.com/loadCity',
//向服务端提交的参数中,增加已选中的
//设置返回-1,意为通知服务端返回空列表,初始化时使用
params: function(){
var pv = $('#selectPageProvince').val();
return {'province': pv?pv:'-1'};
}
});

'http://aaa.com/loadProvince' 这个返回的数据格式是这么样的?

默认值的问题和分页样式名的问题。

1、分页样式名称最好换个默认都是这个名称,就导致还要手工来改样式适配。最好根据插件的特性单独起个名字。
2、源码758-772 行的代码,在使用中发现问题。如果控件的默认值在data 里面找不到,就导致 self.afterInit(self, data); 的 data 参数为空,从而直接导致 afterInit 里面取值报错。 (控件可以手输,可以选择就会产生不一致。或是下拉的数据实际发生变更,都有可能导致控件默认值得和获取数据值不一致。)

如下,如果控件此时有值,值是123就导致 afterInit 内部报错。

var tag_data = [
    {id:1 ,name:'Chicago Bulls',desc:'芝加哥公牛'},
    {id:2 ,name:'Cleveland Cavaliers',desc:'克里夫兰骑士'},
    {id:3 ,name:'Detroit Pistons',desc:'底特律活塞'},
    {id:4 ,name:'Indiana Pacers',desc:'印第安纳步行者'}
];
$('#selectPage').selectPage({
    showField : 'desc',
    keyField : 'id',
    data : tag_data
});

大仙,帮我看看这是啥问题

帮我看看什么问题?
(顺便提一句,啥时候加入Tree显示,你无敌了,因为下拉列表多跟分类有关.祝好!)

console报错--------------------
Uncaught ReferenceError: errorThrown is not defined
at Object.success (selectpage.min.js:1)

html----------------------------------

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
我来了
    <!-- 插件使用的样式表文件 -->
    <link rel="stylesheet" href="https://terryz.oschina.io/lib/selectpage/selectpage.css" type="text/css">

    <script src="https://terryz.oschina.io/lib/jquery.min.js"></script>
    <!-- 插件核心脚本 -->
    <script type="text/javascript" src="https://terryz.oschina.io/lib/selectpage/selectpage.min.js"></script>
</head>
<body>
<input type="text" id="selectPage5">
<script>
    $('#selectPage5').selectPage({
        showField : 'name',
        keyField : 'id',
        data : 'http://localhost:8089/admin/shop/item/category/selectpage_jsonList',
        //params : function(){return {'name':'aa','sex':1};},
        //ajax请求后服务端返回的数据格式处理
        //返回的数据里必须包含list(Array)和totalRow(number|string)两个节点
        // eAjaxSuccess : function(d){
        //     var result;
        //     if(d) result = d.values.gridResult;
        //     else result = undefined;
        //     return result;
        // }
    });

</script>
</body>
</html>

json---------------------------------

[
{
id: 1,
intro: "1	食品",
name: "食品",
pid: 0,
shopId: 1
},
{
id: 3,
intro: "",
name: "快速消费品",
pid: 1,
shopId: 1
},
{
id: 4,
intro: "",
name: "水果",
pid: 1,
shopId: 1
},
{
id: 8,
intro: "",
name: "苹果",
pid: 4,
shopId: 1
},
{
id: 9,
intro: "",
name: "鸭梨",
pid: 4,
shopId: 1
},
{
id: 10,
intro: "",
name: "香蕉",
pid: 4,
shopId: 1
}
]

控件选中值以后,手动删除选中的部分值后,鼠标移出使控件失去焦点,控件显示值未被清空,造成显示不全

您好! 在使用了SelectPage之后,我感觉这是一个非常优秀的插件!不过在使用过程中,发现了一些问题想与你探讨!
 在选中下拉框的某个值以后,我删除选中值的一部分后,鼠标移出控件,会有残留的值显示在控件上。请问有计划对这一部分进行改进呢?
  还有就是通过删除键(backspace)手动删除选中的值,而不是通过控件上的 x 删除,是否有回调事件呢?

以上是我遇到的问题,希望您能抽空回答,谢谢!

功能改进建议

在实际使用中,我需要在发送ajax前,动态设定ajax的请求参数; 举个例子,我有一个table,table的每一行都有一个输入框input:text和一个selectpage; 然后根据当前行的输入框内容,作为selectpage的ajax的参数提交给服务器端后返回selectpage的内容;

在当前selectpage的参数params中,我无法获得当前selectpage控件的dom对象,也就无法匹配到当前表格行的输入框;

另外,希望selectpage增加获取焦点后的事件回调,并在该回调中可以访问控件dom和控件对象本身; 以便于可以动态设置selectpage各项参数;

给params的函数加上参数的方式:

var result = _paramsFunc();

改成

var result = _paramsFunc(this);

然后在使用是就可以这样用了

params: function(self){
    self.xxx;  
}

动态修改数据源

在项目开发中用到了selectPage,遇到了一个问题,发现官方例子里同样存在这个问题,我在使用动态修改数据源的时候,初始的数据中,点击翻页到最后一页,不选择,点击修改数据源,再点击输入框加载数据为空,再次点击数据更新了。

selectpage的一处正则替换问题

// data[search][user] -> data[search][user_primary_key]
if (input_name.match(/]$/)) input_name = input_name.replace(/]?$/, namePrefix);
else input_name += namePrefix;
if (input_id.match(/]$/)) input_id = input_id.replace(/]?$/, namePrefix);
else input_id += namePrefix;

namePrefix 应该是 namePrefix + "]" 吧

增加 dataFilter 方法

文档只是粗略的看了一下,没发现 dataFilter 这个参数。增加一个给Ajax返回的原始数据的进行预处理的函数,参见 $.ajax 的 dataFilter。 因为好多情况后台返回数据已经固定。只能前端拿到数据后进行预处理(当然自己用$.ajax请求,拿到数据处理后返回给控件也是可以的)。

获取焦点和失去焦点问题

首先非常感谢提供这么好的下拉插件,目前发现了一些不算bug的问题。

  • 获取焦点之后失去焦点会默认选择了第一项。

bug一枚,请查收

            $('#select_page').selectPage({
                showField : 'app_key',
                searchField:'keyword',
                keyField : 'id',
                pageSize : 10,
                data : "{{ url_for("admin.ajax_app_page") }}",
                eAjaxSuccess : function(d){
                    var result;
                    if(d) result = d.data;
                    else result = undefined;
                    return result;
                },
                formatItem : function(data){
                    return data.company + '(' + data.app_key + ')';
                }
            });

首先代码是没错的,数据都可以得到,数据翻页也是可以正常使用的。目前的问题是,假定数据总共5页,在输入关键词test后,得到新数据有3页,但是点击下一页和最后一页没有任何反应。麻烦作者查看下ajax下是不是有这个bug。
ps:还有一个疑问,如果在ajax分页下,怎么初始化选中呢?
以下是我的后端代码:
def ajax_app_page():
keyword = request.form.get('keyword','')
pageNumber = request.form.get('pageNumber', 1, type=int)
pageSize = request.form.get('pageSize',10,type=int)
apps_obj = Apps.query.order_by(Apps.create_time.desc())
apps_obj = apps_obj.filter(Apps.is_del == 0)
if keyword !='':
apps_obj = apps_obj.filter(or_(Apps.company.like(u"%{0}%".format(keyword)),Apps.app_key.like(u"%{0}%".format(keyword))))

paginate = apps_obj.paginate(
    pageNumber, per_page=pageSize, error_out=True)
apps_items = paginate.items
apps = []

for item in apps_items:
    apps.append(item.to_json())

data = {
    "pageSize":pageSize,
    "pageNumber":pageNumber,
    "totalRow":paginate.total,
    "totalPage":paginate.pages,
    "list":apps
}
return CommonResponse(ResultType.Success, message=u"获取成功",data=data).to_json()

排版 好像有点问题 将就看下吧!

测试官方的示例发现的问题

官方的示例:
1、点下选择什么也不选。鼠标点一下页面其它地方。此时输入框默认就选种了一个,应该为空。
2、默认获得焦点的控件,圆角成了方角。
3、输入框有图标的,如果选择的文字超过输入框,图标和文档重叠,应该将图标的距离空出来。

关于清除按钮的显示问题

谢谢TerryZ在 v2.7版增加了输入框禁用或只读状态,不显示清除按钮的功能,这个功能我一直想要。但当输入框从禁用变为启用再变为禁用后,清除按钮就一直显示了。建议能不能做一个清除按钮显示的开关,单独控制?

使用过后一些疑问

作者你好,用了之后有点小疑问:

  1. autoSelectFirst设置 ajax模式好像不起作用;
  2. noResultClean 当已经选中,再去掉部分输入值时,没有自动清除选项

SelectPage默认值问题请教

在使用SelectPage的时候,可不可以,我传个id进去,在页面渲染的时候默认值就是这个id对应的值啊?

一些想法

非常感谢您提供这么好的插件,目前有一些想法:

  • 多选有清除内容的功能,单项没有清除功能,需要我们自己delete删除。但是如果我们设置文本框只读时就无法删除内容了。(也就是无法取消选中)

  • 我们选中了某个选项,但是由于我们文本框可以删除数据,这时我删除了几个字,失去焦点之后就和我们下拉数据对不上了。这样无法保障我们录入数据的正确性。是否能够新增一个参数(可以配置是否同步文本框内容):如果用户选中之后又调整了文本框内容,当失去焦点之后选中上一次选中的值(也可以说是没有动过文本框内容的值)

searchField 这个字段貌似没用啊

searchField 这个字段根据里应该是在发送ajax请求时,设置搜索内容的请求参数名; 也就是说当searchField: 'query'时; 则后端可以通过query参数获得搜索内容;

实际在2.12中,设置这个值,除了对orderBy有作用外,其他没变化; 而搜索内容的请求参数名则是searchKey

在2.12的代码中,下面这段,完全不知所以然啊,这循环遍历一个写死的,就一个元素的数组是什么鬼????

//将参数内容从使用","分隔的字符串转换为数组
var arr = ['searchField'];
for (var i = 0; i < arr.length; i++) {
        option[arr[i]] = this.strToArray(option[arr[i]]);
}

真心不知道searchField是做什么用的

编辑页的级联菜单显示的问题

现在级联菜单是可以实现了
但是在已经创建好级联关系的信息上,做编辑页,想把级联菜单默认显示出来,不知道怎么做
现在的情况是只有一级菜单的选中项显示出来了,二级的联动选项有,但是没有在输入框里面显示

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.