remax
remax copied to clipboard
要不要把 remax/macro 下的内容并入 remax?
问题描述
remax/macro
下包含的是基于babel-plugin-macros
的宏。
对于 remax 用户来讲,这属于实现层面的东西,似乎不应当反映到用户接口上。
用户使用 useQuery
、usePageInstance
及 usePageEvent
的时候,还要思考哪些来自 remax
,哪些 remax/macro
,很不应该啊。
macro 的包名必须是 macro 结尾,这是 babel-plugin-macros 的限制。
不熟悉 babel 配置,很惭愧问了这么个业余问题。
据 babel-plugin-macros
文档,是有这个限制。不过,据代码,是可以自定义 isMacrosName
的。
这是不是意味着,通过手动标注进而规避这个限制?
我猜这个 isMacrosName
并不能满足需求, 因为这个 isMacrosName
参数是 import 的 source
。也就是说如果写成这样的话:
import { useQuery } from 'remax';
isMacrosName
拿到的参数是 remax
,并不能区分出 useQuery
是 macro
。
import { useQuery, usePageEvent } from 'remax';
增加一个 pre 阶段的 rule,使用 babel-loader 将以上代码转化为(不能与 babel-plugin-macros
在同一个 loader 中)
import { useQuery } from 'remax';
import { usePageEvent } from 'remax/macro';
import { useQuery, usePageEvent } from 'remax';
增加一个 pre 阶段的 rule,使用 babel-loader 将以上代码转化为(不能与
babel-plugin-macros
在同一个 loader 中)import { useQuery } from 'remax'; import { usePageEvent } from 'remax/macro';
其实能这样做的话就没必要用 macro 了,直接在 babel 插件里处理掉 usePageEvent
就行,要考虑的是这种情况怎么处理:
import * as remax from 'remax';
remax.usePageEvent()