使用 ale.js 制作一个小而美的表格编辑器(1)
今天来教大家如何使用 ale.js 制作一个小而美的表格编辑器,首先先上 gif:
是不是还是有一点非常 cool 的感觉的?那么我们现在开始吧!
这是我们这篇文章结束后完成的效果(如果想继续完成请访问第二篇文章):
ok,很简单吧,我们这篇文章使用的是 ale.js 1.0.1 版本,首先先让我们链接一下这个版本:
<script src="https://cdn.jsdelivr.net/npm/alejs@1.0.1/ale.js"></script>
然后,我们再在 body 标签里创建一个 div,id 为 app,作为我们这个组件的容器:
<div id="app">
</div>
接着我们再创建一个 script 标签,里面写上以下代码:
Ale("excel", {
})
Ale.render("excel", {
el: "#app"
})
这句代码的意思是,我们创建一个名为 excel 的组件,然后把它渲染到 id 为 app 的元素中。
(如果你并没有学习过 alejs 的语法结构,请前往 cn.alejs.org 访问教程)
接下来,我们在定义组件时设置一个 template 属性,并返回一个链接到 methods 属性内的 handleTemplateRender 函数的值:
Ale("excel", {
template() {
return this.methods.handleTemplateRender();
}
})
之后我们需要在 methods 属性里面写上 handleTemplateRender 函数。不过在这之前,我们需要在 data 属性内定义数据,分别是 bookHeader 和 bookData:
data: {
bookHeader: [
"Book", "Author", "Language", "Published", "Sales"
],
bookData: [
["The Lord of the Rings", " J. R. R. Tolkien", "English", "1954-1955", "150 million"],
["The Little Prince", "Antoine de Saint-Exupéry", "French", "1943", "140 million"],
["Dream of the Red Chamber", "Cao Xueqin", "Chinese", "1791", "100 million"]
]
}
定义 data 完成后,我们再去定义 handleTemplateRender 函数:
handleTemplateRender() {
//定义DOM基本结构
var returnVal = "<table><thead><tr>";
//循环遍历bookHeader数据并输出
this.data.bookHeader.forEach(function(val, i, arr) {
returnVal += "<th>" + val + "</th>";
})
returnVal += "</thead></tr><tbody>";
//循环遍历bookData数据并输出
this.data.bookData.forEach(function(thisBook, i, arr) {
//输出一行
returnVal += "<tr>";
thisBook.forEach(function(val, i, arr) {
//输出一列
returnVal += "<td>" + val + "</td>";
})
returnVal += "</tr>";
})
returnVal += "</tbody></table>";
//返回DOM结构
return returnVal;
}
好了,现在 alejs 就可以正常在页面中输出数据了:
以下是全部 js 代码结构:
Ale("excel", {
template() {
return this.methods.handleTemplateRender();
},
methods: {
handleTemplateRender() {
//定义DOM基本结构
var returnVal = "<table><thead><tr>";
//循环遍历bookHeader数据并输出
this.data.bookHeader.forEach(function(val, i, arr) {
returnVal += "<th>" + val + "</th>";
})
returnVal += "</thead></tr><tbody>";
//循环遍历bookData数据并输出
this.data.bookData.forEach(function(thisBook, i, arr) {
//输出一行
returnVal += "<tr>";
thisBook.forEach(function(val, i, arr) {
//输出一列
returnVal += "<td>" + val + "</td>";
})
returnVal += "</tr>";
})
returnVal += "</tbody></table>";
//返回DOM结构
return returnVal;
}
},
data: {
bookHeader: [
"Book", "Author", "Language", "Published", "Sales"
],
bookData: [
["The Lord of the Rings", " J. R. R. Tolkien", "English", "1954-1955", "150 million"],
["The Little Prince", "Antoine de Saint-Exupéry", "French", "1943", "140 million"],
["Dream of the Red Chamber", "Cao Xueqin", "Chinese", "1791", "100 million"]
]
}
})
Ale.render("excel", {
el: "#app"
})
看完了这篇文章,有想了解 alejs 的同学,可以访问 alejs官网、Github 或 码云,感谢你的支持!
我将在明天发布第二篇文章!敬请期待!
关注公众号
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
大前端时代安全性如何做
之前在上家公司的时候做过一些爬虫的工作,也帮助爬虫工程师解决过一些问题。然后我写过一些文章发布到网上,之后有一些人就找我做一些爬虫的外包,内容大概是爬取小红书的用户数据和商品数据,但是我没做。我觉得对于国内的大数据公司没几家是有真正的大数据量,而是通过爬虫工程师团队不断的去各地爬取数据,因此不要以为我们的数据没价值,对于内容型的公司来说,数据是可信竞争力。那么我接下来想说的就是网络和数据的安全性问题。 对于内容型的公司,数据的安全性很重要。对于内容公司来说,数据的重要性不言而喻。比如你一个做在线教育的平台,题目的数据很重要吧,但是被别人通过爬虫技术全部爬走了?如果核心竞争力都被拿走了,那就是凉凉。再比说有个独立开发者想抄袭你的产品,通过抓包和爬虫手段将你核心的数据拿走,然后短期内做个网站和 App,短期内成为你的劲敌。 背景 目前通过 App 中的 网页分析后,我们的数据安全性做的较差,有以下几个点存在问题: 网站的数据通过最早期的前后端分离来实现。稍微学过 Web 前端的工程师都可以通过神器 Chrome 分析网站,进而爬取需要的数据。打开 「Network」就可以看到网站的所有网络...
-
下一篇
开源一个千万级多组Raft库 - Dragonboat
向大家介绍Dragonboat,一个开源的Go实现的多组Raft库,项目已Apache2协议下开源。欢迎大家试用,也请大家点star鼓励:https://github.com/lni/dragonboat 通俗的讲,这是一个分布式共识协议库,应用可以用它把数据分布存储于多台机器上,只要过半数的机器在线,数据与服务便可在线。这避免了因个别机器当机或网络故障而造成数据、服务不可用,提高系统可用性。它提供称为Linearizability的强一致特性:多个副本的数据在外部看来更像使用单一副本,不会有仅提供最终一致性的系统常见且难缠的读到旧版数据的问题。 基于Raft协议的共识库已经应用于很多互联网后台系统。接触了很多用户以后,普遍反馈的当前应用障碍是缺乏一个可靠、高性能、且对共识协议本身接近全透明的开箱即用的通用实现。 优势 Dragonboat已经较好的解决所有上述应用障碍: 测试最完备的开源Raft库之一,所有的实现代码、测试工具、测试结果均已开源。 吞吐性能最好的开源Raft库,千万级每秒实现,平均单核即达每秒40万次以上写吞吐。 功能最完备的开源Raft库,不做特殊应用假设限制,安全...
相关文章
文章评论
共有0条评论来说两句吧...




微信收款码
支付宝收款码