使用vite js捆绑我的库,我需要同时提供两个版本:
当我使用 webpack 时,我有:
module.exports = [
defaultUmdBuild("production"),
defaultUmdBuild("development"),
];
Run Code Online (Sandbox Code Playgroud)
它输出两个文件,然后我的库有这个入口点:
'use strict';
if (process.env.NODE_ENV === 'production') {
module.exports = require('./mylib.production.js');
} else {
module.exports = require('./mylib.development.js');
}
Run Code Online (Sandbox Code Playgroud)
如何使用 vite 做同样的事情?
谢谢。
我正在使用 React Context API,发现提供程序在每次值更改时都会渲染两次。
这是我所做的。
问题 ?
每次我点击按钮更改上下文值时,提供程序都会渲染两次,但效果仅执行一次。
因此 ref 总是递增两次,但效果每次只获取最后一个值(它会跳过一个值!)。
另外,在提供程序的第一次渲染时,它会记录两次相同的引用值,这对我来说非常奇怪。
谁能告诉我为什么我会出现这种行为?
这是代码:
提供者:
const MyContext = React.createContext(0);
function Provider({ children }) {
const state = React.useState("Yes");
const ref = React.useRef(0);
ref.current += 1;
console.log("Context provider ", ref.current);
React.useEffect(() => {
console.log("effect on provider, ref value = ", ref.current);
});
return <MyContext.Provider value={state}>{children}</MyContext.Provider>;
}
Run Code Online (Sandbox Code Playgroud)
两个孩子
function DirectChild({ children }) {
console.log("provider direct child");
return children;
}
function Consumer() {
console.log("consumer");
const …Run Code Online (Sandbox Code Playgroud) 在从 webpack 迁移到 vite 的过程中,我们用来process.env.NODE_ENV添加特定的代码。
现在使用 vite,捆绑包包含了开发模式下的所有内容,包括process.env.NODE_ENV.
这里是vite.config.js:
import path from 'path'
import { defineConfig } from 'vite'
/**
* @type {import('vite').UserConfig}
*/
export default defineConfig(({mode}) => {
console.log('vite configuration for mode', mode);
return {
define: {
NODE_ENV: "production",
},
build: {
mode: "development",
lib: {
name: 'MyLib',
fileName: 'mylib.production',
entry: path.join(process.cwd(), "src/index.ts"),
},
rollupOptions: {
external: 'react',
output: [
{
format: 'umd',
globals: { react: 'react' },
entryFileNames: `mylib.production.js`,
},
]
}
} …Run Code Online (Sandbox Code Playgroud) 所以我决定开始使用 CompletableFutureJava8,我无法弄清楚这个片段有什么问题:
public static void main(String...strings) throws Exception {
final Supplier<User> makeUserSupplier = () -> makeUser();
final Supplier<String> uuidSupplier = () -> makeUUID();
final CompletableFuture<User> futureUser = CompletableFuture.supplyAsync(makeUserSupplier);
final CompletableFuture<String> futureUUID = CompletableFuture.supplyAsync(uuidSupplier);
CompletableFuture.allOf(futureUser, futureUUID)
.thenApplyAsync(aVoid -> {
final User user = futureUser.join();
final String uuid = futureUUID.join();
return "received user + " + user + " and uuid is " + uuid ;
})
.handle((ok, e) -> {
System.out.println("ok----" + ok);
System.out.println("e----" + e);
return null;
});
} …Run Code Online (Sandbox Code Playgroud) reactjs ×3
esbuild ×2
rollup ×2
vite ×2
webpack ×2
asynchronous ×1
java-8 ×1
javascript ×1
uuid ×1