LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

前端又又出新框架,這次沒有也不需要打包了

admin
2023年11月16日 23:9 本文熱度 1210

最近,前端開發(fā)領(lǐng)域又迎來了一個(gè)新框架——ofa.js。它的獨(dú)特之處在于,不依賴于現(xiàn)有的 nodes/npm/webpack 前端開發(fā)工作流程。與jQuery類似,只需引用一個(gè)腳本,您就能像使用React/Vue/Angular一樣輕松地開發(fā)大型應(yīng)用。




極易上手

如果您要開發(fā)簡(jiǎn)單的項(xiàng)目,想要用一個(gè)漂亮的按鈕組件,例如 Ant Design(https://ant-design.antgroup.com/index-cn) 中的 Button組件(https://ant-design.antgroup.com/components/button-cn),你需要學(xué)習(xí)Node.js、NPM和React等知識(shí),才能開始使用該按鈕組件。對(duì)于非前端開發(fā)者或初學(xué)者來說,這將是一個(gè)漫長的過程。

如果使用基于ofa.js 開發(fā)的組件,就不需要這么復(fù)雜了;你只需要了解HTML的基礎(chǔ)知識(shí)(即使不看ofa.js的文檔),也可以輕松使用基于ofa.js開發(fā)的組件。以下是使用官方的 punch-logo 代碼示例:

<!-- 引入ofa.js到您的項(xiàng)目 -->
<script src="https://cdn.jsdelivr.net/gh/kirakiray/ofa.js/dist/ofa.min.js"></script>

<!-- 加載預(yù)先開發(fā)的punch-logo組件 -->
<l-m src="https://kirakiray.github.io/ofa-v4-docs/docs/publics/comps/punch-logo.html"></l-m>

<!-- 使用punch-logo組件 -->
<punch-logo style="margin:50px 0 0 100px;">
    
<img src="https://kirakiray.github.io/ofa-v4-docs/docs/publics/logo.svg" logo height="90" />
    
<h2>不加班了</h2>
    
<p slot="fly">下班給我</p>
    
<p slot="fly">遲點(diǎn)下班</p>
    
<p slot="fly">周末加班</p>
</punch-logo>




你可以最直接拷貝上面的代碼,放到一個(gè)空白的html文件內(nèi)運(yùn)行試試;這使得ofa.js非常容易與傳統(tǒng)的Web開發(fā)技術(shù)棧相融合。

一步封裝組件

封裝組件同樣非常簡(jiǎn)單,只需一個(gè)HTML文件即可實(shí)現(xiàn)。以下是一個(gè)官方封裝的開關(guān)(switch)組件示例:

<!-- my-switch.html -->
<template component>
  
<style>
    .switch {
      position
: relative;
      display
: inline-block;
      width
60px;
      height
34px;
      background-color
#ccc;
      transition
: background-color 0.4s;
      border-radius
34px;
      cursor
: pointer;
    }

    .slider
 {
      position
: absolute;
      height
26px;
      width
26px;
      left
4px;
      bottom
4px;
      background-color
: white;
      transition
: transform 0.4s;
      border-radius
50%;
    }

    .switch.checked
 {
      background-color
#2196f3;
    }

    .switch.checked
 .slider {
      transform
translateX(26px);
    }
  
</style>
  
<div class="switch" class:checked="checked" on:click="checked = !checked">
    
<span class="slider"></span>
  
</div>
  
<script>
    export default {
      tag
"my-switch",
      data
: {
        checked
true,
      },
    };
  
</script>
</template>

在使用時(shí),只需使用 l-m 組件引用它:

<script src="https://cdn.jsdelivr.net/gh/kirakiray/ofa.js/dist/ofa.min.js"></script>
<l-m src="./my-switch.html"></l-m>
<my-switch></my-switch>




示例可以在官方網(wǎng)站下方查看。由于無需打包流程,只需將文件上傳到靜態(tài)服務(wù)器即可發(fā)布,還可以進(jìn)行跨域引用,這極大降低了組件共享的成本。

多種模板語法糖

ofa.js與Vue和Angular一樣提供了許多模板語法糖,主要包括:

  • 文本渲染
  • 屬性綁定/雙向綁定
  • 事件綁定
  • 條件渲染
  • 列表渲染
  • ...

具體案例可在官網(wǎng)向下滾動(dòng)至“提供多樣便捷的模板語法”處查看。

天生的狀態(tài)同步高手

與其他框架不同,ofa.js 使用無感狀態(tài)同步。這意味著數(shù)據(jù)不需要通過函數(shù)操作,只需設(shè)置數(shù)據(jù)對(duì)象即可實(shí)現(xiàn)狀態(tài)同步。以下是一個(gè)共享黑夜模式的按鈕示例:

// is-dark.js
const isDark = $.stanz({
  
valuefalse,
});

export default isDark;

<!-- my-button.html -->
<template component>
  
<style>
    :host {
      display
: block;
    }

    .container
 {
      display
: inline-block;
      padding
0.5em 1em;
      color
: white;
      border-radius
6px;
      background-color
: blue;
      cursor
: pointer;
      user-select
: none;
    }
    .container.dark
 {
      background-color
: red;
    }
  
</style>
  
<div class="container" class:dark="isDark.value">
    
<slot></slot>
  
</div>
  
<script>
    import isDark from "./is-dark.js";
    export
 default {
      data
: {
        isDark
: {},
      },
      attached() {
        // 共享dark對(duì)象數(shù)據(jù)

        this
.isDark = isDark;
      },
      detached() {
        // 清除內(nèi)存記錄

        this
.isDark = {};
      },
    };
  
</script>
</template>



您可以跳轉(zhuǎn)到 狀態(tài)同步案例 以查看效果。

最簡(jiǎn)單的表單操作

表單只需調(diào)用formData方法,就能生成自動(dòng)同步數(shù)據(jù)的對(duì)象:

<form id="myForm">
  
<input type="text" name="username" value="John Doe" />
  
<div>
    sex:
    
<label>
      man
      
<input type="radio" name="sex" value="man" />
    
</label>
    
<label>
      woman
      
<input type radio="radio" name="sex" value="woman" />
    
</label>
  
</div>
  
<textarea name="message">Hello World!</textarea>
</form>
<br />
<div id="logger"></div>
<script>
  const data = $("#myForm").formData();

  $("#logger"
).text = data;
  data.watch(() => {
    $("#logger"
).text = data;
  });
</script>



您還可以輕松地反向設(shè)置表單數(shù)據(jù):

<form id="myForm">
  
<input type="text" name="username" value="John Doe" />
  
<div>
    sex:
    
<label>
      man
      
<input type="radio" name="sex" value="man" />
    
</label>
    
<label>
      woman
      
<input type="radio" name="sex" value="woman" />
    
</label>
  
</div>
  
<textarea name="message">Hello World!</textarea>
</form>
<br />
<div id="logger"></div>
<script>
  const data = $("#myForm").formData();

  setTimeout(() => {
    // 反向設(shè)置數(shù)據(jù)

    data.username = "Yao"
;
    data.sex = "man"
;
    data.message = "ofa.js is good!"
;
  }, 1000
);
</script>




制作自定義表單組件也沒有其他框架那么復(fù)雜,只需為組件定義valuename屬性即可。

具體效果可跳轉(zhuǎn)至formData API(https://ofajs.com/cn/api/others/form-data.html)查看。

開發(fā)應(yīng)用

您還可以使用ofa.js開發(fā)Web應(yīng)用,然后直接引用已開發(fā)的應(yīng)用到您的網(wǎng)頁上:

<!DOCTYPE html>
<html lang="en">
  
<head>
    
<meta charset="UTF-8" />
    
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
    
<title>應(yīng)用演示</title>
    
<script src="https://cdn.jsdelivr.net/gh/kirakiray/ofa.js/dist/ofa.min.js"></script>
  
</head>
  
<body>
    
<o-app src="https://xxxxx.com/app-config.mjs"> </o-app>
  
</body>
</html>

具體效果可跳轉(zhuǎn)至使用o-app組件查看。

SCSR

官方提供了一種類似服務(wù)端渲染的解決方案,它不僅保證了用戶體驗(yàn),還使頁面在靜態(tài)狀態(tài)下可被搜索引擎爬取。官網(wǎng)采用了SCSR的方案。

SCSR的全稱是Static Client-Side Rendering,又稱為靜態(tài)客戶端渲染。它是CSR(Client-Side Rendering)的一種變種,在保留了CSR用戶體驗(yàn)的基礎(chǔ)上,還能夠讓頁面在靜態(tài)狀態(tài)下被搜索引擎爬取。

您可以點(diǎn)擊SCSR方案以查看詳細(xì)信息。

代碼簡(jiǎn)潔

當(dāng)前版本4.3.29的 ofa.min.js 文件僅有52KB,經(jīng)過gzip壓縮后僅有18KB。

其他

最近升級(jí)到了v4版本,目前可用的第三方庫還比較有限,但以后將逐漸增加。作者正在準(zhǔn)備開發(fā)基于ofa.js的UI庫。


該文章在 2023/11/16 23:09:35 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
在线中文字幕乱码免费网站 | 精品女同一区二区三区免费站 | 天天在线精品视频一区二区 | 中文字幕亚洲日韩乱字幕 | 日本欧美麻豆精品 | 亚洲最新在线免费观看 |