CNode

webpack如何向前端一样编译koa后端项目

问答
YYMFL发布于7 年前最后回复7 年前14 回复6964 浏览0 收藏

webpack能不能像编译前端(vue等)项目一样编译后端koa项目?有没有相应的教程?

查看回复

回复 (14)

I
i5ting#1·7 年前

没有啥意义,你的目的是为了代码保护么?

Z
zuohuadong#2·7 年前

用 ncc

F
FreePoi#3·7 年前
const path = require('path');
const fs = require('fs');
const _ = require('lodash');

var nodeExternals = require('webpack-node-externals');
module.exports =config = {
    target: 'node',
    entry: './dist/main.js',
    externals: [nodeExternals()],
    output: {
        filename: 'main.js',
        path: path.resolve(__dirname, 'dist')
    },
    resolve: {
        extensions: [".js"],
    },
    module: {
        rules: [
        ]
    },
    optimization:{
        minimize: false, // <---- disables uglify.
        // minimizer: [new UglifyJsPlugin({
        //     mangle: true
        // })] // if you want to customize it.
    }
};

产生一个打包好的main.js文件和node_modules在同一个目录,注意配置中的_externals_字段。

Z
zhennann#4·7 年前

可以参考CabloyJS的模块后端编译机制:https://cabloy.com/zh-cn/articles/beef7cd0ab0a495284797a5af933a155.html

Y
YMFL#6·7 年前
引用 zuohuadong用 ncc

@zuohuadong 好的 我看看,谢谢了

I
i5ting#9·7 年前
引用 zhennann可以参考CabloyJS的模块后端编译机制:https://cabloy.com/zh cn/articles/beef7cd0ab0a495284797a5af933a155.html

@zhennann 你这介绍也是怪怪的。KoaJS + EggJS + VueJS + Framework7?不清楚它们之间的关系么?

Z
zhennann#10·7 年前

@i5ting 因为CabloyJS是全栈,所以就把前端和后端用到的技术连着一块儿写了。望大佬多赐教🙏

I
i5ting#11·7 年前
引用 zhennann@i5ting 因为CabloyJS是全栈,所以就把前端和后端用到的技术连着一块儿写了。望大佬多赐教🙏

@zhennann EggJS的依赖是KoaJS,写着干嘛呢? 意义不大。

VueJS和Framework7感觉也不是很搭啊

Z
zhennann#12·7 年前

@i5ting 您提到的这两个问题,我是这样考虑的:

  1. 主要是考虑到某些初次访问者知道KoaJS而不知道EggJS,所以写上KoaJS,就知道CabloyJS后端与KoaJS的继承关系,然后再建立起对EggJS的认知
  2. 原始的Framework7是专门为移动端优化的UI组件库。但是Framework7内置的路由库对多个页面的堆叠支持的非常好(相对vue-router而言)。CabloyJS继承了Framework7的优点,同时进行了改造,从而迁移到PC端,实现了pc=mobile+pad的页面布局。达到的效果就是前端只需开发一套页面就可以通用于mobile和pc。 可以参考一下这张动图效果:https://github.com/zhennann/cabloy#亮点与痛点
L
lzszone#13·7 年前

能, 不知道, 看webpack文档吧... 我觉得后端与前端区别是模块规范不同...甚至你如果用libraryTarget: 'umd'的话啥都不用改....

W
waitingsong#14·7 年前

不如后端用 ts 写,然后 tsconfig 里设置 target 为 es3 ...

参与回复
登录后即可参与回复。登录