第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【前端騷操作】賊好用框架,Mithril核心概覽

標(biāo)簽:
Html5 JavaScript 前端工具

Mithril.js

个人认为这个框架不久可能会火,这才是 JS 意义上的面向对象编程,兼容到 IE9,还是非常不错的。

入门教程已经写过,这边就根据官网的英文文档结合实例来进行更加全面的解析,放宽心,这个框架简单的一塌糊涂,不信你对比下 Angular,你就知道 Angular 有多复杂了(对象是纯前端工程师,不是你们这帮后端工程化大拿),当然,React 与 Vue 都一样,没有对比就没有伤害。


概览

m(selector, attrs, children)

核心函数,用来从虚拟 DOM 生成真实 DOM 的关键。

m("div.class#id", {title: "title"}, ["children"])

m.mount(element, component)

自动 diff DOM 结构树,从而达到数据驱动作用,就是数据变化 DOM 自动更新啦。

var state = {
    count: 0,
    inc: function() {state.count++}
}

var Counter = {
    view: function() {
        return m("div", {: state.inc}, state.count)
    }
}

m.mount(document.body, Counter)

m.route(root, defaultRoute, routes)

路由,用来设置路由跳转。

var Home = {
    view: function() {
        return "Welcome"
    }
}

m.route(document.body, "/home", {
    "/home": Home, // defines `http://localhost/#!/home`
})

m.route.set(path)

函数式路由调转,就是不使用 a 标签,使用事件触发跳转,类比 location.href 即可。

m.route.set("/home")

m.route.get()

获取当前路由,可以用来解析数据等。

var currentRoute = m.route.get()

m.route.prefix(prefix)

设置路由之前使用,用来配置路由的前缀,比如默认是:#!,可以修改为 # 等等。

m.route.prefix("#!")

给 a 标签设置的东西,让 MithrilJS 知道这个 a 标签是路由,不是页面跳转,可以省略路由前缀。

m("a[href='/Home']", {oncreate: m.route.link}, "Go to home page")

m.request(options)

MithrilJS 的 Ajax 了。

m.request({
    method: "PUT",
    url: "/api/v1/users/:id",
    data: {id: 1, name: "test"}
})
.then(function(result) {
    console.log(result)
})

m.jsonp(options)

jsonp,本人认知就在跨域了,没用过,我后面的教程也会过滤掉这里的内容。

m.jsonp({
    url: "/api/v1/users/:id",
    data: {id: 1},
    callbackKey: "callback",
})
.then(function(result) {
    console.log(result)
})

m.parseQueryString(querystring)

解析 query 传参到对象。

var object = m.parseQueryString("a=1&b=2")
// {a: "1", b: "2"}

m.buildQueryString(object)

与上面相反,把对象解析为 query 字符串。

var querystring = m.buildQueryString({a: "1", b: "2"})
// "a=1&b=2"

m.withAttr(attrName, callback)

input 等输入表单标签双向绑定工具。

var state = {
    value: "",
    setValue: function(v) {state.value = v}
}

var Component = {
    view: function() {
        return m("input", {
            oninput: m.withAttr("value", state.setValue),
            value: state.value,
        })
    }
}

m.mount(document.body, Component)

m.trust(htmlString)

直接插入 html 标签函数,如无必要,慎用,较危险。

m.render(document.body, m.trust("<h1>Hello</h1>"))

m.redraw()

手动重新渲染,使用 m.mountm.route 目前还没用到过。

var count = 0
function inc() {
    setInterval(function() {
        count++
        m.redraw()
    }, 1000)
}

var Counter = {
    oninit: inc,
    view: function() {
        return m("div", count)
    }
}

m.mount(document.body, Counter)

差不多就这些函数与功能就涵盖了整个 MithrilJS 了,没错,就这些!

什么 JSX, ES6 等啦,这些归类到插件,使用 webpack 自己配置即可,与 MithrilJS 无关。就像 Vue 也可以不配置 webpack 或不使用 vue-cli,直接使用 CDN 模式开发一样。

个人强烈推荐使用原生模式来练手这个东西,真的,真的,非常好用。甚至你愿意,也可以去扒拉源码看看,一样简单的令你发指!

后面翻译(严格来说是整理)工程量还是有点的,幸好是简单的,不然一个人玩不来。所以会分几期弄完,希望喜欢的人留意下。


欢迎关注,如有需要 Web,App,小程序,请留言联系。

點(diǎn)擊查看更多內(nèi)容
2人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
軟件工程師
手記
粉絲
1.6萬(wàn)
獲贊與收藏
901

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消