1.0.0 • Published 17 days ago

@diahkomalasarinpm/fuga-consequatur-eos v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
17 days ago

wxa.js

轻量级的渐进式小程序开发框架,专注于小程序原生开发,提供更好的工程化、代码复用能力,提高开发效率并改善开发体验。

极速上手,零配置,可无痛迁移。

框架优势

  • 🖖 极速上手 无额外的学习门槛,可以完全使用原生的小程序语法开发。

  • :surfer: 零配置 标准项目无需任何配置,即可运行。

  • :light_rail: 低成本 超低迁移成本,原生小程序可以马上在 @wxa/cli2 中跑起来。支持原生和 wxa 混杂开发,助力老项目逐步迁移。

  • :rocket: 依赖分包算法 自研的依赖分包算法,帮助开发者充分的利用分包空间

  • :curly_loop: 依赖分析 自动分析项目依赖,无需手动 copy 三方依赖到项目中。

  • :penguin: 全方位 提供小程序开发增强能力,譬如状态管理、表单校验等。

  • 🤖 按需引入 任意第三方工具、组件库,随时安装使用,完美适配 weui, vant-weapp等组件库。

  • :alien: 多实例 一次性编译出多个三方项目或其他平台的小程序,如头条小程序。

More detail Documents

更完善的文档

安装使用

使用 yarnnpm 全局安装

npm i -g @wxa/cli2

极速新建项目

wxa2 create

启动开发环境

wxa2 build --watch

开发示例

app.wxa

<script>
import {App} from '@wxa/core';

@App
export default class Main {
    globalData = {
        userInfo: 'Genuifx',
    }
}
</script>

<config>
{
    "pages": [
        "pages/index"
    ]
}
</config>

<style lang="scss">
page {
    width: 100%;
    height: 100%;
}
</style>

pages/index.wxa

<script>
import {Page, Mixins, Debounce} from '@wxa/core';
import fooMixin from '../mixins/foo.js';

//定义页面,添加Mixins
@Page
@Mixins(fooMixin)
export default class Index {
    data = {
        formA: {
            org: 'fintech',
            name: 'wxa'
        }
    }

    async onLoad() {
        console.log('Hello World')    
    }

    // 函数防抖
    @Debounce(300)
    sumbitA(e) {
        console.log('submit success!');
    }
}
</script>

<config>
{
    "navigationBarTitleText": "Hello Wxa"
}
</config>

<template>
    <view class="page">
        Hi, <input type="text" value="{{formA.name}}" />
        <button bindtap="sumbitA">提交</button>
    </view>
</template>

<style lang="scss">
.page {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
}
</style>

默认导出的方法将会自动调用小程序相应的 PageComponentApp 方法进行注册。

更完善的文档

极速预览小程序

wxa2 cli --action preview

技术特点

wxa 是一个 AOP 框架,主要使用 Decorator(运行时改写,拦截)和预编译实现框架功能。

使用 Decorator 实现了:

  • :white_check_mark: Fetch 自动防重,自动队列管理的网络请求方法。
  • :white_check_mark: Router 简洁的 API、预加载特性。
  • :white_check_mark: Eventbus 跨页面,跨组件交互的简单方案。
  • :white_check_mark: Mixins 混合,跨页面、跨组件复用逻辑。
  • :white_check_mark: Diff 增量设置数据。
  • :white_check_mark: Storage 小程序持久化缓存数据。
  • :white_check_mark: SessionStorage 应用周期内缓存数据。
  • :white_check_mark: Lock 防止重复执行函数,前端防重利器。
  • :white_check_mark: Debounnce 防抖动。

查看详细的 Class Decorators

预编译方面,实现了对小程序项目的依赖解析,利用依赖树对整个项目进行管理,以此为基础适配了npm、单文件开发、云开发、三方开发。开发语法方面支持最新的 ES*语法(包括 Async/Await)、Sass/Scss、Stylus,有需求的话可以适配更多语法。

wxa生态

包名描述版本
@wxa/corewxa运行时核心npm.io
@wxa/cli2wxa编译时与命令行工具npm.io
@wxa/validate表单验证、支持自定义校验规则和提示npm.io
@wxa/watchwatch & computednpm.io
@wxa/log小程序实时日志上报npm.io
@wxa/mobxwxa引入mobxnpm.io
@wxa/reduxwxa引入reduxnpm.io
@wxa/plugin-uglifyjs压缩美化 Javascript 代码npm.io
@wxa/plugin-replace任意字符替换,用于生产测试参数替换npm.io
@wxa/plugin-copy复制指定静态资源npm.io
@wxa/plugin-bind-hijack劫持小程序bind事件插件npm.io
@wxa/plugin-minify-wxmlwxml 压缩npm.io
@wxa/plugin-postcss自定义需要引入的postcss插件npm.io
@wxa/plugin-dependencies-analysis项目构建后的模块依赖关系、体积大小等信息可视化, 方便分析项目的优化空间。npm.io
wxa-vscodevscode 插件。开箱即用,安装完毕你将获得:代码自动填充、格式化; 语法高亮、检查(包括wxml、wxs文件); 代码片段提示; 单文件组件支持npm.io

社区微信群

社群二维码过期可联络

邮箱 junbiaoli@webank.com、iveswen@webank.com

项目负责人微信 szyshangzhiyuan (加好友请备注:wxa)

Contributors ✨

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

LICENSE

MIT

sharedarraybufferobjiteratepuredirsidefast-copywgetgradients css3redux-toolkithastrimpackagequeuelrutextoffsetomitspringprototypestringifygesturessomeES2015jestinstallsliceArray.prototype.flattentermgetterestreeisConcatSpreadableutilitychineseECMAScript 2023TypeScriptes2017superagentdotenvcoerciblebrowserlistpackages0extraECMAScript 7commanderboundfseventsdefinePropertypipefastifyloadinglimitedArrayqueueMicrotaskcolourwalkingUint32ArraymergepasswordcallboundObject.valuesparentassertstesterObservablelengthtc39JSON-Schemasanitizationbootstrap cssrm -frwatchtranspilerfile systemyaml__proto__sortedtypedarrayspathmacostacitInt32ArrayutilTypedArrayratepropwhatwgcmdWebSocketstypeofUnderscorefind-upRxargparsetdduninstalles-abstractentriesimmersyntaxdom-testing-librarybyteLengthArray.prototype.flatMaputil.inspectwritablekeysjsdomcolorscollection.es6walkshrinkwrapdefineefficientconnectStyleSheetregularworkercssnumberforEachxdgECMAScript 3arraysuperstructnested cssoptimizerauthwordwrapshellmkdirpbrowserslistthroatclientunicodequeryES6writesetPrototypeOfio-tssymlinkdeepcopycorsprettyinvariantwarningECMAScript 2019installerObjectfast-deep-clonecryptwebspeedhookstypedebugnodees8less csshasOwncompile lessObject.keysrecursivedescriptorgraphqlsearchjson-schemaES5variables in cssvarurlserializationvestmimespawnjoichromiumbannerjasmineES2023Function.prototype.namephonequoteescapeprotobufiterationES2017koreanparserbusymoduleinspectoptionrmapicollectionlanguagelaunchsigtermshebangenvironmentfunctionmapgetoptStreamsfast-deep-copyargumentreact-testing-librarykarmaconsumecodesflattenECMAScript 6signalsconfighandlersfast-clonemiddlewarereadexecutablelistenersfullreact-hooksmetadatajQueryzodajaxes2016fantasy-landcallclonenpmreducehelpersRegExp#flagsjson-schema-validationpolyfillrmdircjkasyncES2016sort6to5concurrencyWebSocketmulti-packageclass-validatorfastcopyframeworkreal-timeirqtsaccessibilitylastgetPrototypeOfreacttoobjectshamsymbolsexit-codeargscore-jsfixed-widthhardlinksES2021propertiesbcryptArray.prototype.filterRxJSfunctionsformspopmotionschemavaluesquerystringperformantECMAScript 5dependency managerstyled-componentsequalityassignArray.prototype.containspushES2018weakmapdebuggerAsyncIteratorprocessMapreduxRFC-6455256east-asian-widthmobilematchAllflatMapless mixinsanimationPromiseECMAScript 2021lesscssReactiveExtensionsbrowsertouchreadablestreamemojistatelessvalidatorcryptoharmonycommand-lineMicrosoftmime-dbinternal slotexpressionhookformstyleguideWeakMapES2019findLastIndextostringtagECMAScript 2022Array.prototype.findLastIndexobjectexpressshimsymboltypeerrorargumentsstreams2asttasktypedarraytypesafeextensionwatchFilespinnersl10nbddwhich$.extendObject.definePropertysafejson-schema-validatorexecpatchpackage managerprotocol-buffersramdaxtermtestbatchwatcherframeres-shim APIjsdiffgdprjsjwtSymbol.toStringTagfigletbindcacheeslintpluginprotoeventsReflect.getPrototypeOfreact-hook-formcurriedperformancea11yrequirefindLastSetIteratorsameValueZeroweaksetenumerablecharactersttysetterawaittypanionajvratelimitlook-upES3ArrayBuffer#slice3dmochaSymbolvisualthrottleoperating-systemtslibcallbackemitjapanesemomentdeep-clonepersistentESnextbufferscompareString.prototype.trimrandomlazy.envstringifierbootstrap lesstoolkitjavascriptieECMAScript 2015Object.isincludesFloat64ArrayECMAScript 2018CSSfastclonearraysoptimistwindowsstreamsnegativePushuuidrfc4122dataviewansivaluejsonschemaArray.prototype.flatBigInt64ArraylinkformstructuredCloneinputmakeclassesidbluebirdArrayBuffer.prototype.slicetrimStartfromlockfileexeflagsdragtraversesharedmoveless compilerhttpsintrinsicfolderbreaktoolseslintpropertyes2018xhrTypeBoxeverynopewatchingcreatees-shimsxdg-opencheckduplexopensenderBigUint64ArrayStreamapolloArrayBufferpositivewordbreakelectronsignalautoprefixercontainsimportexittypedreusediffES2022lintserializeArray.prototype.findLastObject.assignchildissettingsrangeerrorrapidstyleequalindicatoruser-streamssymlinkssyntaxerrordeeppreserve-symlinkstestingReactiveXhashcopyslotwaitfullwidthpostcss-pluginglobtapregular expressionregular expressionscharacterlibphonenumbergrouptyped arraymixinsreact posecall-bindargvoncevalidgetintrinsichttpbabel-coreconcatwaapiformatbundlingupmatches
@crabas0npm/nihil-alias-sint@crabas0npm/voluptas-ad-vel@diahkomalasarinpm/a-quam-voluptas-qui@diahkomalasarinpm/ad-molestias-fugit-sunt@diahkomalasarinpm/animi-facere-velit-dolorum@diahkomalasarinpm/asperiores-accusantium-minus-quod@diahkomalasarinpm/blanditiis-ullam-a-fugiat@diahkomalasarinpm/consectetur-ad-repudiandae-delectus@diahkomalasarinpm/corporis-a-quam-distinctio@diahkomalasarinpm/corrupti-autem-optio-iure@diahkomalasarinpm/cumque-nesciunt-non-eos@diahkomalasarinpm/debitis-explicabo-sunt-enim@diahkomalasarinpm/debitis-quas-fuga-occaecati@diahkomalasarinpm/deserunt-cupiditate-quos-beatae@diahkomalasarinpm/dolorem-tempore-vitae-animi@diahkomalasarinpm/eveniet-velit-praesentium-dolorem@diahkomalasarinpm/harum-esse-officiis-magnam@diahkomalasarinpm/harum-nihil-exercitationem-delectus@diahkomalasarinpm/illum-molestias-accusantium-rem@diahkomalasarinpm/incidunt-repudiandae-expedita-eos@diahkomalasarinpm/iure-asperiores-perspiciatis-mollitia@diahkomalasarinpm/magnam-incidunt-error-sapiente@diahkomalasarinpm/nesciunt-expedita-rerum-cumque@diahkomalasarinpm/occaecati-incidunt-dolor-accusantium@diahkomalasarinpm/omnis-veritatis-asperiores-recusandae@diahkomalasarinpm/praesentium-accusamus-maiores-autem@diahkomalasarinpm/provident-eaque-consectetur-harum@diahkomalasarinpm/sapiente-quibusdam-repudiandae-eligendi@diahkomalasarinpm/tempora-iusto-voluptates-vero@diahkomalasarinpm/vero-reiciendis-asperiores-magnam@diahkomalasarinpm/voluptate-asperiores-voluptatum-accusantium@diahkomalasarinpm/voluptatem-illum-aperiam-dolores@ffras4vnpm/commodi-vero-assumenda
1.0.0

17 days ago