Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
This project is currently in beta and APIs are subject to change.
跨平台、框架编译转换框架。
Ditto 本质上是一个基于框架的编译转换工具,使用它,你可以轻易的实现编写一套代码,输出不同框架原生代码,从而达到跨平台、跨框架的目的。
为什么编译为原生代码?
ditto
的愿景是简单、快速、便捷的实现代码转换,从而可以充分的体验各式框架的优点,在不同场景下可以选择最为切合的技术框架。所以ditto
选择编译为目标原生干净的代码,最大化的发挥目标框架本身的优势。
为了便于编译转换工作的进行,ditto
提供了一套编码规范,参考规范书写的代码才能够使用 ditto
进行编译转换。同时为了满足不同场景定制化的需求,编码规范以及编译转换规则都是可配置的,并以插件的形式存在。即通过定制化的插件实现对应的编译输出,如 ditto
内置的 wechat
和 vue2
插件会分别编译为微信小程序原生代码和 vue.js
2.0 原生代码。
现如今前端开发需要考虑的平台越来越多,前端框架也如雨后春笋般出现,针对不同端去编写多套代码成本非常高,去尝试不同的前端框架也需要一定的成本,这时候只编写一套代码就能够运行到不同的平台,以及嵌入不同的框架的能力就显得极为需要,ditto
的初衷也是为了解决这个痛点问题。
使用 ditto
, 只需要书写一套代码,再通过 ditto
编译为不同平台原生代码或是不同框架代码,就可以达到多端复用以及跨框架复用的目的。
ditto
的语法规范与 Vue.js
类似,同时支持 jsx 语法,让模板具有更强的表现力。
ditto
的组件化开发方式与 vue 基本保持一致,需要注意的一点是,在 ditto
中触发数据的更新需要通过 this.setData
API 来显示的更新。但当选择编译为 vue 原生代码时,编译工具会自动替换为 vue 的数据更新方式。
ditto
本身不具备编译成特定平台代码的功能,而是通过接口的形式将转译需要的数据提供给插件开发者,这样就可以通过不同的插件实现而得到不同的编译转换。
如 Ditto.createCompiler('vue2');
就通过引入 vue2 插件而创建了一个 vue2 类型的编译器,通过创建的编译器就可以将代码编译为对应 vue 2 代码。
需编译转换组件
以 /* @component */
形式的注释代码将组件代码(模板、样式、逻辑部分)与其它代码分开
若是一个路由文件则以 /* @router */
标识
子组件及组件样式模板引入代码需以 /* @import /开始并以空行结束
组件名与组件文件名保持一致
组件需包含 name
属性及组件名必须
./app.js
/* @import */
import Footer from '../components/footer/footer';
import template from './app.tpl.js';
import Style from './app.style.js';
/* @component */
export default {
name: 'app',
style: Style,
template: template(Footer),
props: {
},
data: {
hi: 'hello world!',
statusMsg: 'Not ready!',
items: [1, 2, 3, 4]
},
methods: {
onShowMessage () {
console.log('wellcome to here!');
}
},
ready () {
this.setData({
statusMsg: 'I am ready.'
})
}
}
./app.style.js
const Style = {
pageWrap: {
display: 'flex',
width: "100%",
height: "100%",
flexDirection: 'column'
},
header: {
flex: 1,
height: 200,
backgroundColor: 'red'
},
container: {
flex: 1,
height: 500,
backgroundColor: '#eee'
}
};
export default Style;
./app.tpl.js
const template = (Footer) => (
<View className='page-wrap'>
<View className='header'>
<Text text='hi'></Text>
</View>
<View v-for='(item, index) in items' key='index' className='container'>
<Text on-click='onShowMessage'
text='statusMsg'>
</Text>
</View>
<View>
<Component v-ref={Footer} />
</View>
</View>
)
export default template;
注:样式和模板既可以使用单文件的形式,也可以直接编写在同一个文件中,因为他们都遵循 javascript(jsx) 语法规范。但如果使用单文件,那么样式和模板的后缀必须为
.style.js
和.tpl.js
。
wechat
vue2
.wechat.js
)if else
配合平台变量使用,且只能在代码块是使用FAQs
transform code on different mvvm framework
The npm package ditto-core receives a total of 0 weekly downloads. As such, ditto-core popularity was classified as not popular.
We found that ditto-core demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.