SSR中Webpack-Server-Config配置

服务端webpack配置

  1. 服务端要正确处理首屏的图片和样式等
  2. 服务端要支持动态import,懒加载

webpack.server.js

const config = require('./webpack.base.js');

const serverConfig = {
    target: 'node', // 指定为node环境下
    mode: 'development',
    entry: './src/server',
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'build')
    },
    externals: [nodeExternals()], // 不打包node_modules等模块
    module: {
        rules: [{
            test: /\.css?$/,
            use: ['isomorphic-style-loader', {  // 处理服务端样式文件
                loader: 'css-loader',
                options: {
                    importLoaders: 1,
                    modules: true,   // 开启css-module
                    localIdentName: '[name]_[local]_[hash:base64:5]'
                }
            }]
        },{
            test: /\.(png|jpeg|jpg|gif|svg)?$/,
            loader: 'url-loader',
            options: {
                limit: 8000,
                outputPath: '../build/',  // 图片资源输出路径
                publicPath: '/'
            }
        }]
    }
};

module.exports = merge(config, serverConfig);

注意的点,其实大部分都是关于webpack的踩坑记录

  1. 服务端无法识别和处理css,图片资源等,所以要用webpack打包编译,其中对于css的loaderisomorphic-style-loader
  2. express或者koa起的服务代理的静态代理地址一定要对app.use(express.static('build'))
  3. 如果在.babelrc中配置了plugin,要注意dynamic-import-node会对lodabel按需加载有影响,因为这是配置服务端支持动态import()的插件,会导致webpack编译碰到import()时被该插件劫持
  4. babel-preset-env: "targets": ["node": "current"]要指定node编译支持到当前版本, 不然会报regeneratorTime等不支持等错误
  5. 如果想调试前端项目,配置webpack-dev-server时,--hot --inline在webpack最新版本中只需要配置--inline就可以内联刷新,同时index.html中对js的引用要和webpack中配置的contentBase匹配

实战

  1. 会开发一个结合SSR《全网音乐免费试听-周杰伦版》的SPA应用
  2. 正式开发中还是建议使用Next
  3. 关于node中处理css和图片等可以使用插件:webpack-isomorphic-tools,universal-webpack但是前面的作者已经不更新了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 webpack介绍和使用 一、webpack介绍 1、由来 ...
    it筱竹阅读 11,290评论 0 21
  • 前端将大型项目分成一个个单独的模块,一般封装好的每个模块都会实现一个目的明确的完成的功能。如何处理这些模块以及模块...
    pixels阅读 3,458评论 1 14
  • 学习流程 参考文档:入门Webpack,看这篇就够了Webpack for React 一. 简单使用webpac...
    Jason_Zeng阅读 3,200评论 2 16
  • 构建一个小项目——FlyBird,学习webpack和react。(本文成文于2017/2/25) 从webpac...
    布蕾布蕾阅读 16,956评论 31 98
  • 为什么家里刚进的新货我不知道? 为什么外卖订单的货没有时我又理所应当的以为没有? 为什么不去跟魏先生或者老妹证伪一...
    老姐嘛嘛阅读 122评论 0 0