Giter VIP home page Giter VIP logo

alita's Introduction

alita

All Contributors

Build With Umi alita dumi

A mobile React framework based on umi.

Getting Started

Create Alita App

yarn create alita

create pc app, use yarn create alita --pc

Please refer to the official website for details.

Community

Github Issue 钉钉群 微信群
alitajs/alita/issues

LICENSE

MIT

Other

React Native Util areslabs/alita

Contributors ✨

Thanks goes to these wonderful people (emoji key):

小虎oni
小虎oni

💻 📖 🎨
Ashoka
Ashoka

💻
陈书航
陈书航

💻 🔌
精武陈真
精武陈真

💡
yuhang
yuhang

🔌
chencheng (云谦)
chencheng (云谦)

🎨
Yingci
Yingci

🚇
阿平
阿平

💻
damon.chen
damon.chen

💻
修行
修行

💻
红尘炼心
红尘炼心

📖
tangbzai
tangbzai

💻
Hexi
Hexi

💻
Damon Wong
Damon Wong

💻
Alioth
Alioth

💻
Penguin-Lin
Penguin-Lin

💻

alita's People

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

alita's Issues

[WIP] 编译方案优化

现在编译之后,在生产环境中,用不到 vendors.js

process.env.NODE_ENV !== 'development'
? ['micro', 'umi']
: ['vendors', 'micro', 'umi'],
};

但是在编译的时候,还是一样生成了。

vendors: {
name: 'vendors',
chunks: 'all',
test: /[\\/]node_modules[\\/]/,
priority: -12,
},

只是在编译成功之后,又用脚本删除了

// 删除 dist 下的 vendors.js
const vendors = join(api?.paths?.absOutputPath!, 'vendors.js');
unlinkSync(vendors);
console.log(`${chalk.green('Remove:')} ${vendors}`);
}

不知道能不能直接不生成 vendors.js 文件。但是不影响其他文件的生成情况。

umi-plugin-cache-route报错

在umi中tabs中用umi-plugin-cache-route时,切换tab页并伴随route更新,会不定时报如下错误,同一个tab项有时报错有时又不报:

index.js:1 Warning: Failed prop type: The prop matchis marked as required inCacheSwitch, but its value is null. in CacheSwitch (created by Context.Consumer) in withRouter(CacheSwitch) (created by Updatable) in Updatable (created by CacheComponent) in div (created by CacheComponent) in CacheComponent (created by Context.Consumer) in Route (created by CacheRoute) in CacheRoute (created by RouteWithProps) in RouteWithProps (created by Updatable) in SwitchFragment (created by Updatable) in Updatable (created by CacheSwitch)

[Feature Request] 生成静态骨架屏

完整方案见 #150
image

期望的效果是,用户打开网页的时候,就能看到骨架屏,但是这时候,react相关环境可能还没有启动。

<body><div id="root"><这里自动写骨架></div></body>

这样用户刚打开网页就以为项目启动了,体验极好。事实上还是一样的启动时间。

[@alitajs/native插件用法] @alitajs/native这个插件的配置方法是什么

我按照官方文档配置@alitajs/native插件,
`
import { defineConfig } from 'alita';

export default defineConfig({
appType: 'cordova',
mobileLayout: false,
packageId: 'com.biad.parkgame',
displayName: 'biad.parkgame',
plugins: ['@alitajs/native'],
native: ['device'],
});
`

然后执行alita dev时报错

cordova platform use android cordova serve(pid:6268) Invalid config key: native Error: Invalid config key: native at Config.getConfig (D:\projects\biad.park.game.mobile\node_modules\@umijs\core\lib\Config\Config.js:178:13) at D:\projects\biad.park.game.mobile\node_modules\@umijs\core\lib\Service\Service.js:279:44 at Generator.next (<anonymous>) at asyncGeneratorStep (D:\projects\biad.park.game.mobile\node_modules\@umijs\core\lib\Service\Service.js:108:103) at _next (D:\projects\biad.park.game.mobile\node_modules\@umijs\core\lib\Service\Service.js:110:194) at processTicksAndRejections (internal/process/task_queues.js:93:5)

我想知道原生能力像camera之类的该怎么配置,万分感谢

image

Keep Alive

项目紧急需求,umi 一直没进展,先在alita中实现使用。
如果可以写成插件。
umijs/umi#3084

[Feature Request] serve

Background

比如演示版本的时候,希望发布的代码包含mock数据
开发完成之后,能够一件部署,现在还需要一个容器才能启动
build之后的请求代理
甚至需要ssr,看看是放到umi合适还是放这。

Proposal

Describe the solution you'd like, better to provide some pseudo code.

Additional context

Add any other context or screenshots about the feature request here.

项目名称带有'-',会使得corova初始化错误

当项目中带有 '-' ,执行 init失败

$alita cordova --init

需要给出错误提示,在执行命令的时候先判断项目名称,判断带有'-'
直接给出错误提示,不执行 cordova create

在执行alita g app 的时候,判断项目名称带有 '-'
需要给出提示,"项目名称带有'-',会导致后续cordova等功能不可用,建议修改"

umi在安装 @alitajs/hd插件后,ant mobile组件内的字体变模糊

umi.js中引入@alitajs/hd插件做高清适配,ant mobile组件内的字体变小并且模糊。

config.js配置如下:
plugins: ['@alitajs/hd'],
hd: {
// same as config.theme, default set @hd: 2px
"theme": {},
"px2rem": {
"rootValue": 100,
"unitPrecision": 5,
"propWhiteList": [],
"propBlackList": [],
"exclude": false,
"selectorBlackList": [],
"ignoreIdentifier": false,
"replace": true,
"mediaQuery": false,
"minPixelValue": 3
}
}

[Feature Request] alita native remove cordova plugin

Background

A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Proposal

Describe the solution you'd like, better to provide some pseudo code.

Additional context

Add any other context or screenshots about the feature request here.

A request for shrinking the size of alita

Hi, @xiaohuoni

According to npm’s installation rule, it parses the package.json based on the libraries’s declaration order, to construct the node_modules tree. For the libraries that have not been installed in the project, node_modules tree can share them by putting them at the top level of the tree. For the libraries that have been installed, it checks whether their specified version constraints are compatible with the installed ones. If yes, npm ignores them, otherwise, npm will put such duplicated libraries in the subfolders (npm’s sandboxes).

We installed and analyzed the alita, and found that it is large in size. alita’s node_modules tree has installed 2134 libraries. 1249 out of 2134 libraries are shared at the top level of the tree, while 885 libraries are the duplicated in the sandboxes. We further checked the duplicated libraries, and listed the them as follows (format: library name, version number, the number of installations on the node_modules tree). For example, “source-map, 0.6.1, 85” denotes that library source-map 0.6.1 has been installed 85 times in this project.

Clicking for details (duplicated libraries)—
source-map, 0.6.1, 85
chalk, 2.4.2, 77
supports-color, 6.1.0, 76
supports-color, 5.5.0, 75
postcss, 7.0.32, 75
rc-util, 5.0.4, 22
postcss-value-parser, 3.3.1, 17
isarray, 1.0.0, 16
readable-stream, 2.3.7, 14
string_decoder, 1.1.1, 14
isobject, 3.0.1, 14
mkdirp, 0.5.5, 12
extend-shallow, 2.0.1, 11
rc-animate, 3.1.0, 11
ms, 2.1.2, 10
kind-of, 6.0.3, 8
rc-trigger, 4.3.0, 8
rc-align, 4.0.0, 8
bn.js, 4.11.9, 7
debug, 4.1.1, 7
ansi-regex, 2.1.1, 5
warning, 4.0.3, 5
schema-utils, 1.0.0, 5
define-property, 0.2.5, 5
is-accessor-descriptor, 1.0.0, 4
is-data-descriptor, 1.0.0, 4
is-descriptor, 1.0.2, 4
strip-ansi, 6.0.0, 4
path-to-regexp, 1.8.0, 4
cssesc, 2.0.0, 4
postcss-selector-parser, 5.0.0, 4
loader-utils, 2.0.0, 4
is-number, 3.0.0, 4
kind-of, 3.2.2, 4
ansi-regex, 5.0.0, 4
define-property, 1.0.0, 3
color-convert, 2.0.1, 3
color-name, 1.1.4, 3
path-key, 3.1.1, 3
get-stream, 5.1.0, 3
has-flag, 4.0.0, 3
safe-buffer, 5.2.1, 3
supports-color, 7.1.0, 3
react-router, 5.1.2, 3
mini-create-react-context, 0.3.2, 3
is-fullwidth-code-point, 3.0.0, 3
string-width, 4.2.0, 3
react-router-dom, 5.1.2, 3
babel-plugin-dynamic-import-node, 2.3.3, 3
regenerator-runtime, 0.13.5, 3
fs-extra, 7.0.1, 3
camelcase, 5.3.1, 3
ansi-styles, 2.2.1, 3
range-parser, 1.2.1, 3
chalk, 1.1.3, 3
debug, 3.2.6, 3
braces, 2.3.2, 3
fill-range, 4.0.0, 3
strip-ansi, 3.0.1, 3
supports-color, 2.0.0, 3
micromatch, 3.1.10, 3
to-regex-range, 2.1.1, 3
pify, 3.0.0, 3
ajv, 6.12.2, 3
fast-deep-equal, 3.1.3, 3
ansi-styles, 4.2.1, 3
postcss-selector-parser, 3.1.2, 3
which, 2.0.2, 2
glob-parent, 3.1.0, 2
is-glob, 3.1.0, 2
bytes, 3.1.0, 2
qs, 6.7.0, 2
resolve-from, 3.0.0, 2
@babel/traverse, 7.10.0, 2
find-up, 2.1.0, 2
locate-path, 2.0.0, 2
is-extendable, 1.0.1, 2
punycode, 1.4.1, 2
p-limit, 1.3.0, 2
p-locate, 2.0.0, 2
p-try, 1.0.0, 2
is-stream, 2.0.0, 2
readable-stream, 1.1.14, 2
string_decoder, 0.10.31, 2
npm-run-path, 4.0.1, 2
set-value, 2.0.1, 2
get-stream, 4.1.0, 2
cross-spawn, 5.1.0, 2
path-to-regexp, 2.4.0, 2
inherits, 2.0.3, 2
shebang-regex, 3.0.0, 2
shebang-command, 2.0.0, 2

So many duplicated libraries could cause potential problems, such as: slower installs, exploding bundle sizes, and so on.

Based on npm’s installation rules, we comprehensively analyzed the compatibilities of all the transitive dependencies’ version ranges and the topological structure of your node_modules tree. We suggested alita add the following duplicated libraries with their compatible versions into the package.json file (as shown in the attachment), which help to refactor the project’s node_modules tree.

Clicking for details—
"isarray": "1.0.0",
"readable-stream": "2.3.6",
"kind-of": "3.2.0",
"ms": "2.1.1",
"isobject": "3.0.1",
"source-map": "0.6.1",
"mkdirp": "0.5.3",
"debug": "4.1.1",
"extend-shallow": "2.0.1",
"@babel/types": "7.10.2",
"is-number": "3.0.0",
"braces": "2.3.2",
"pify": "3.0.0",
"semver": "6.3.0",
"supports-color": "6.1.0",
"postcss": "7.0.27",
"glob-parent": "3.1.0",
"micromatch": "3.1.10",
"find-up": "2.1.0",
"path-key": "3.1.0",
"ajv": "6.12.0",
"strip-ansi": "5.2.0",
"ansi-regex": "2.1.1",
"path-type": "3.0.0",
"emojis-list": "3.0.0",
"chalk": "2.4.2",
"camelcase": "5.3.1",
"regenerator-runtime": "0.13.5",
"@babel/parser": "7.9.4",
"array-union": "1.0.2",
"rc-util": "5.0.4",
"postcss-value-parser": "3.3.1"

After cleaning the local installation environment and re-installing alita based on the revised package.json file, we found that the node_modules tree totally installs 1674 libraries, including the 1249 ones at the top level, 425 ones in the sandboxes. As such, the revised package.json file reduces 460 duplicated libraries for alita. In this manner, alita’s size is shrunk from 500MB to 357MB, reducing 7745files (from 58189 to 50444) and 1511 folders (from 7534 to 6023) in total. Note that, all the added directed dependencies in package.json file are deduced based on the original node_modules tree, which will not miss any required dependencies.

Before refactoring dependency tree——
1
After refactoring dependency tree——
2

package.json.txt
package-lock.json.txt

Would you like to adopt this suggestion to shrink the project’s size?

Thank you for your attention.
Best regards.

新建项目支持,输入项目名称

现状

$ alita g app

需要先手动新建一个空文件夹。

期望

$ alita g app [name]

先判断是否存在参数 name
如果存在,新建一个目录,再执行项目初始化
如果参数name不存在
判断当前文件夹是否为空文件夹
如果为空,执行项目初始化
如果不为空,给出提示,需要空文件夹,或者需要参数name

新建页面g pages

  1. less 里面,不应该写 font-size: 36px;
  2. 页面 Page ,应该改成 route+Page 如 HomePage,便于报错定位
  3. 可选的不生成对应的 model

如何加群

钉钉dingtalk
image
微信wechat
image
微信群失效的话,请添加下面机器人,回复alita进群。
image

[Feature Request] alita layout 强绑定了umi,需要更新umi@3

Background

alita layout 强绑定了umi,需要更新umi@3,最好是能够移除依赖关系。
但是router现在是从umi的runtime导出的。

Proposal

Describe the solution you'd like, better to provide some pseudo code.

Additional context

Add any other context or screenshots about the feature request here.

android 弹出软键盘会挤压页面(是否修复待定,可能有其他影响)

android

弹出软键盘会挤压页面
设置android:windowSoftInputMode="adjustPan|stateHidden"

-        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
+        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustPan|stateHidden">

cordova android ios 不适配

android

cordova webview 需要手动设置

        WebView webView = (WebView) this.appView.getView();
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);

需要添加到脚本中。
platforms/android/app/src/main/java/com/alitaexample/xxxxx/MainActivity.java

loadUrl(launchUrl);
之后编写

动态路由dropByCacheKey报错

使用动态路由,类似 /books/:id时
alivePathName为[/books/1234]
KeepAliveViewMap只有key /books/:id
DropByCacheKey执行到keepAliveViewMap[pathname].recreateTimes += 1;时会出现错误

umi-plugin-cache-route 插件bug

image
开始操作,切换同级路由不会报错,一旦切换嵌套的路由就报出这样的一个警告!,请问这个是什么原因?是路由的版本关系?

预研和开发计划表

记录一些坑位,简单的想法和demo

产品 项目 备注
web-components https://github.com/alitajs/components
blocks 充分用上抽象语法树 https://github.com/angular/angular-cli 感觉可以归到umi ui里面
alitax https://github.com/refect/refect
kiwi https://github.com/alitajs/umi-plugin-kiwi https://github.com/alibaba/kiwi
ice https://github.com/alibaba/ice/
landing 可视化编辑页面 https://github.com/ant-design/ant-design-landing
static mock 将mock数据解析成静态json,去掉参数,保留正确响应。是的,umi build 之后,不需要部署服务器就可以预览页面,用于项目演示

alita g app 缺少.gitignore

# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
**/node_modules

# production
/dist
/.vscode

# misc
.DS_Store
npm-debug.log*
yarn-error.log

/coverage
.idea
yarn.lock
package-lock.json
*bak
.vscode

# visual studio code
.history
*.log
functions/*
lambda/mock/index.js
.temp/**

# umi
.umi
.umi-production

umi3使用@alitajs/hd启动报错

我参照umi的issues对hd的解决方案,新构建了umi3的项目,然后yarn add @alitajs/hd --save了这个插件,按照实例在umirc.js里面配置了
plugins: ['@alitajs/hd'], hd:{},
启动的时候报错

node_modules/@alitajs/hd/lib/index.js: Cannot read property 'getFile' of undefined (47, 29)

请问该怎么处理啊

默认不开启umi-plugin-menus

现在的项目中默认开启了umi-plugin-menus
会自动生成src/menus.json,在项目中一直没有使用
还存在不同的开发人员,生成的文件不太一致的代码冲突问题

开发包中的一些基础开发功能缺失

由于这个项目立项的时候,比较模糊
是我一时兴起,模模糊糊的时候新建的
后续看着@sorrycc(云谦)的-基于umi构建前端框架sekiro
又慢慢的结合一些预想需求和公司项目整合需求,可以说,一路走来都是莫名其妙的
所以有很多基本的东西,都没有添加。
比如
1、开发时候的debug信息
2、提交代码的CI
3、所有的测试用例
4、e2e测试

[cordova] alita native

在对接 cordova 的时候,有一些常用的原生能力,对于不太熟悉 cordova 的同学很难选择。
比如选择文件,文件预览这些。
看到 ionic 收集了一些社区上比较好的库,并且构建了 ionic native
可惜包里还有 ng 的代码。
alita native 至少要做3件事
1、h5 开发环境的兼容,类似。

 if (!(window as any).Fingerprint) {
  (window as any).Fingerprint = {
    isAvailable: (success) => { success && success() },
    show: ({ }, success, error) => {
      success && success()
    }
  }
}

2、调用方式改成 Promise

export const filePreView = meta => {
    return new Promise((resolve, reject) => {
        cordova.plugins.fileOpener2.open(meta.localURL, meta.type, {
            error: function (e) {
                reject('Error status: ' + e.status + ' - Error message: ' + e.message);
            },
            success: function () {
                resolve('file opened successfully');
            },
        });
    });
};

3、统一使用方式

import { filePreView } from '@alitajs/native'
or
import filePreView from '@alita-native/filePreView'

现在的使用现状

window.cordova.plugins.xxx
window.xxx
window.cordova.xxx

清单

https://ionicframework.com/docs/native/

[Feature Request] umi 版本应该锁定

Background

由于umi改了一个路由获取,导致很多项目都挂了。
建议在alita中锁定umi版本,有更新跟随alita更新。
这样比较可控。

@alitajs/hd 配置错误

在umijs 3.x 配置
// .umirc.ts
export default {
plugins: ['@alitajs/hd'],
hd: true,
};

编译报错
Validate config "hd" failed, "value" must be of type object
ValidationError: "value" must be of type object

h5项目需要添加默认样式

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}
html,
body,
#root {
  width: 100%;
  height: 100%;
}
body {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-overflow-scrolling: touch;
}
input {
  border: none;
  outline: none;
}
#root {
  position: relative;
  overflow: scroll;
}

textarea:disabled,
input:disabled {
  background-color: transparent;
}

mainPath 失效

What happens?

A clear and concise description of what the bug is.

Mini Showcase Repository(REQUIRED)

Provide a mini GitHub repository which can reproduce the issue. Use yarn create alita then upload to your GitHub

How To Reproduce

Steps to reproduce the behavior: 1. 2.

Expected behavior 1. 2.

Context

  • Alita Version:
  • Node Version:
  • Platform:

[email protected]

定位变更

去年的定位比较模糊,umi 有的能力都暴露出来了,对 umi 未提供的能力,写了简单插件支撑。做到后面,alita 可以说是一个简化配置的 umi 脚手架。今后 umi 生态会有更多的简化配置方案,umi@3 也会往“强约定”的方向发展。参加 SEE Conf 和阅读了最近 umijs 团队新增的几个项目,都是我们去年完成的,或者还未投入资源进行的,所以这部分的需求可以直接用 umi 和 antd 官方的,比自研靠谱。

今年 alita 的 slogan 应该还是 “让开发人员专注于业务本身”,会从去年的全 web 方向,转移到专注移动端App方向。 基本的发力点会聚焦在 “改善开发人员体验上”。

新增功能

先看 umi 和 antd 官方有没有,有的方案,做一个集成。没有的方案,再自研。

变更,跟随[email protected]

约定式路由

动态路由

约定 [] 包裹的文件或文件夹为动态路由。

比如:

+ pages
  + [post]
    - index.js
    - comments.js
  + users
    - [id].js
  - index.js

会生成路由配置,

[
  { path: '/', exact: true, component: '@/pages/index' },
  { path: '/users/:id', exact: true, component: '@/pages/users/[id]' },
  { path: '/:post/', exact: true, component: '@/pages/[post]/index' },
  {
    path: '/:post/comments',
    exact: true,
    component: '@/pages/[post]/comments',
  },
];

内置请求

直接使用 https://github.com/umijs/plugin-request
不再维护 https://github.com/alitajs/alita/blob/master/packages/alita/src/request.ts

需要移动端的图表库

实际应用中,发现,alitajs更多的被用于移动端开发。
在做可视化展示的时候,需要配套的图表库或者图表组件使用。

发现一个https://github.com/antvis/f2 ,但似乎图表库比较少
需要更丰富的图表库,或者自己补充组件。

[Feature Request] 微应用平台支撑

一、应用开发(包含扩展能力)
支持所有的web方案,不强制使用框架,最终产物也更贴近于web资源,只是在需要原生能力的时候调用平台SDK。但是依旧推荐使用alita 开发,因为可以通过框架层支持,把产物包拆的更小,可以使打开微应用的时候加载的web资源更少。可以解决web应用要么首屏打开慢,要么切换页面需要再次加载资源的问题。
二、平台SDK对接(应用API和服务端API)
1、应用API
① 基础能力(设备系统信息、更新微应用)
② 网络能力(请求、上传、下载、WebSocket)
③ 媒体(地图、图片的选择和保存、相机、音视频)
④ 位置(定位、选择地址)
⑤ 文件(保存、删除、选择)
⑥ 开放能力(登录、授权信息、支付、指纹和人脸识别、活体检测、数据统计)
⑦ 设备(NFC、剪切板、屏幕信息、扫码)
2、服务端API
① 登录
② 获取用户信息
③ 接口调用token
三、平台实现方案(这里只描述现已知的技术难点)
1、原生端(无特指的话均为ios和安卓)
① 走 web 资源下载的方式,类似cordova的形式,然后做文件管理,不同的微应用定向到不同的文件夹。
② 提供sdk相对应的原生函数方法。
③ 提供alita需要的环境,比如在全局变量中有 react 等基本库。
④ 提供开发调试的环境,未上架之前如何调试原生能力
2、web端
① 编译时抽离一些基本库,只打包业务需要的代码。基本剥离了所有的第三方库。
② 提供 sdk 的对接文件
③ 提供开发调试环境,未在原生场景时,调用原生方法应给出正确的说明等
④ 编译产物是否需要加密,涉及到原生端下载web资源的方式。
3、服务端
① OAuth2.0 认证
② 大数据分析
③ 数据统计
4、后台管理端
① 数据统计报表
② 数据分析平台
③ 基本的功能对应《平台接入流程》

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.