谦虚的 JavaScript 框架
“〇〇是未来的趋势。”
十年前
今天
![]() |
![]() |
Turbolinks | No Turbolinks |
Turbolinks 环境下如何写 JavaScript?
$(document).ready(function() {
$('#btn').on('click', function() {} );
});
🙅 错误
$(document).on('turbolinks:load', function() {
$('#btn').on('click', function() {} );
});
🤦 怪异
$(document).on('click', '#btn', function() {} );
$(document).on('click', '[data-behavior~="btn"]', function() { });
🙎 还行
class AppDrawer extends HTMLElement {...}
window.customElements.define('app-drawer', AppDrawer);
// Create an observer instance linked to the callback function
var observer = new MutationObserver(callback);
// Start observing the target node for configured mutations
observer.observe(targetNode, config);
// Later, you can stop observing
observer.disconnect();
Stimulus.js 基于 MutationObserver
$ npm install stimulus
(function (window) {
'use strict';
window.application = Stimulus.Application.start()
})(window);
![]() |
Stimulus • TodoMVC |
Framework | Code Lines |
---|---|
Vanilla JS | 948 |
React | 493 |
Angular | 371 |
Stimulus | 240 |
Vue | 170 |
Stimulus | Vue |
---|---|
服务端渲染 | 客户端渲染 |
交互简单 | 交互复杂 |
客户端状态少 | 客户端状态多 |
哪里可以用上 Stimulus.js
Admin & Dashboard
github.com/getcampo/campo
Does it scale?
“我们的应用跑在一百台服务器上。”
“是不是性能不好?”
“我们团队有一百个开发人员。”
“太棒了,怎么做到的?”
使用合适的工具做合适的事。