From f3ead1d0b8aeaed0cf32b37ce7d0269c1c92c43b Mon Sep 17 00:00:00 2001 From: NK Date: Thu, 27 Aug 2020 15:54:33 +0800 Subject: [PATCH] fix(jsx2mp): attributes transform in wechat&release 0.4.18 (#1933) * fix(jsx2mp): attributes transform in wechat * fix(jsx2mp): lint error * feat(jsx2mp): finish event transform handle * refactor(jsx2mp): finish event handle * docs(jsx2mp): add event handler example * fix(example): lint error * chore(jsx2mp): remove useless code * docs(jsx2mp): update comment * build(jsx-compiler): publish version 0.4.18 --- examples/README.md | 2 + examples/event-handler/.eslintrc.js | 3 + examples/event-handler/.gitignore | 17 ++++ examples/event-handler/README.md | 15 ++++ examples/event-handler/build.json | 20 +++++ examples/event-handler/package.json | 33 +++++++ examples/event-handler/src/app.js | 4 + examples/event-handler/src/app.json | 11 +++ .../src/components/CustomComp/index.css | 5 ++ .../src/components/CustomComp/index.jsx | 15 ++++ examples/event-handler/src/document/index.jsx | 21 +++++ .../event-handler/src/pages/Home/index.css | 16 ++++ .../event-handler/src/pages/Home/index.jsx | 21 +++++ .../package.json | 3 +- .../src/components/Test/index.ali.jsx | 1 + .../src/components/Test/index.wechat.jsx | 1 + packages/jsx-compiler/package.json | 2 +- packages/jsx-compiler/src/adapter.js | 7 ++ packages/jsx-compiler/src/baseComponents.js | 1 - .../src/modules/__tests__/attribute.js | 3 + .../src/modules/__tests__/element.js | 88 +++++++++++++++++++ .../jsx-compiler/src/modules/attribute.js | 9 +- packages/jsx-compiler/src/modules/element.js | 26 +++++- packages/jsx-compiler/src/utils/checkAttr.js | 2 +- .../jsx-compiler/src/utils/handleRefAttr.js | 4 +- .../src/utils/isNativeComponent.js | 14 +-- 26 files changed, 328 insertions(+), 16 deletions(-) create mode 100644 examples/event-handler/.eslintrc.js create mode 100644 examples/event-handler/.gitignore create mode 100644 examples/event-handler/README.md create mode 100644 examples/event-handler/build.json create mode 100644 examples/event-handler/package.json create mode 100644 examples/event-handler/src/app.js create mode 100644 examples/event-handler/src/app.json create mode 100644 examples/event-handler/src/components/CustomComp/index.css create mode 100644 examples/event-handler/src/components/CustomComp/index.jsx create mode 100644 examples/event-handler/src/document/index.jsx create mode 100644 examples/event-handler/src/pages/Home/index.css create mode 100644 examples/event-handler/src/pages/Home/index.jsx diff --git a/examples/README.md b/examples/README.md index e710cbdb6e..38a79edf2c 100644 --- a/examples/README.md +++ b/examples/README.md @@ -24,3 +24,5 @@ npm run build * use-rax-compiled-component-in-runtime-miniapp: Rax 小程序运行时项目使用 Rax 编译时组件 * app-lifecycle: 使用 app 生命周期 * page-lifecycle-with-router: 使用 page 生命周期 + 路由跳转 +* event-handler: 事件绑定(编译时小程序) + diff --git a/examples/event-handler/.eslintrc.js b/examples/event-handler/.eslintrc.js new file mode 100644 index 0000000000..04f3c852d6 --- /dev/null +++ b/examples/event-handler/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: ['rax'] +}; \ No newline at end of file diff --git a/examples/event-handler/.gitignore b/examples/event-handler/.gitignore new file mode 100644 index 0000000000..50a53daceb --- /dev/null +++ b/examples/event-handler/.gitignore @@ -0,0 +1,17 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +*~ +*.swp +*.log + +.DS_Store +.idea/ +.temp/ + +build/ +dist/ +lib/ +coverage/ +node_modules/ + +template.yml diff --git a/examples/event-handler/README.md b/examples/event-handler/README.md new file mode 100644 index 0000000000..94c45d1ddc --- /dev/null +++ b/examples/event-handler/README.md @@ -0,0 +1,15 @@ +# rax-materials-basic-app + +## Getting Started + +### `npm run start` + +Runs the app in development mode. + +Open [http://localhost:9999](http://localhost:9999) to view it in the browser. + +The page will reload if you make edits. + +### `npm run build` + +Builds the app for production to the `build` folder. diff --git a/examples/event-handler/build.json b/examples/event-handler/build.json new file mode 100644 index 0000000000..1c2cbb9f30 --- /dev/null +++ b/examples/event-handler/build.json @@ -0,0 +1,20 @@ +{ + "inlineStyle": false, + "plugins": [ + [ + "build-plugin-rax-app", + { + "targets": [ + "miniapp", + "wechat-miniprogram" + ], + "miniapp": { + "buildType": "compile" + }, + "wechat-miniprogram": { + "buildType": "compile" + } + } + ] + ] +} diff --git a/examples/event-handler/package.json b/examples/event-handler/package.json new file mode 100644 index 0000000000..7d0a89bc64 --- /dev/null +++ b/examples/event-handler/package.json @@ -0,0 +1,33 @@ +{ + "name": "@rax-materials/scaffolds-app-js", + "author": "rax", + "description": "Rax 无线跨端应用工程,使用 JavaScript。", + "version": "0.1.0", + "scripts": { + "build": "build-scripts build", + "start": "build-scripts start", + "lint": "eslint --ext .js --ext .jsx ./" + }, + "dependencies": { + "rax": "^1.1.0", + "rax-app": "^2.0.0", + "driver-universal": "^3.0.0", + "rax-image": "^2.0.0", + "rax-link": "^1.0.1", + "rax-text": "^1.0.0", + "rax-view": "^1.0.0", + "rax-document": "^0.1.0" + }, + "devDependencies": { + "@alib/build-scripts": "^0.1.0", + "babel-eslint": "^10.0.3", + "build-plugin-rax-app": "^5.0.0", + "eslint": "^6.8.0", + "eslint-config-rax": "^0.1.0", + "eslint-plugin-import": "^2.20.0", + "eslint-plugin-module": "^0.1.0", + "eslint-plugin-react": "^7.18.0" + }, + "private": true, + "originTemplate": "@rax-materials/scaffolds-app-js" +} diff --git a/examples/event-handler/src/app.js b/examples/event-handler/src/app.js new file mode 100644 index 0000000000..f04a4233b3 --- /dev/null +++ b/examples/event-handler/src/app.js @@ -0,0 +1,4 @@ +import { runApp } from 'rax-app'; +import appConfig from './app.json'; + +runApp(appConfig); diff --git a/examples/event-handler/src/app.json b/examples/event-handler/src/app.json new file mode 100644 index 0000000000..ffbc0add84 --- /dev/null +++ b/examples/event-handler/src/app.json @@ -0,0 +1,11 @@ +{ + "routes": [ + { + "path": "/", + "source": "pages/Home/index" + } + ], + "window": { + "title": "Rax App" + } +} diff --git a/examples/event-handler/src/components/CustomComp/index.css b/examples/event-handler/src/components/CustomComp/index.css new file mode 100644 index 0000000000..2f8d8d1144 --- /dev/null +++ b/examples/event-handler/src/components/CustomComp/index.css @@ -0,0 +1,5 @@ +.logo { + width: 200rpx; + height: 180rpx; + margin-bottom: 20rpx; +} \ No newline at end of file diff --git a/examples/event-handler/src/components/CustomComp/index.jsx b/examples/event-handler/src/components/CustomComp/index.jsx new file mode 100644 index 0000000000..ef191bc442 --- /dev/null +++ b/examples/event-handler/src/components/CustomComp/index.jsx @@ -0,0 +1,15 @@ +import { createElement } from 'rax'; +import Image from 'rax-image'; + +import './index.css'; + +export default (props) => { + const { uri } = props; + const source = { uri }; + return ( + + ); +}; diff --git a/examples/event-handler/src/document/index.jsx b/examples/event-handler/src/document/index.jsx new file mode 100644 index 0000000000..ae0b8d0cdb --- /dev/null +++ b/examples/event-handler/src/document/index.jsx @@ -0,0 +1,21 @@ +import { createElement } from 'rax'; +import { Root, Style, Script} from 'rax-document'; + +function Document() { + return ( + + + + + rax-materials-basic-app +