GithubHelp home page GithubHelp logo

Comments (6)

psimyn avatar psimyn commented on May 2, 2024

webpack config creates 2 versions of this: app.js and app.server.js

The server rendered one is included in server/config/routes.js on the server side. This takes the HTML of app/base.html, which includes the client-rendered app.js in a script tag.

from reactgo.

gsccheng avatar gsccheng commented on May 2, 2024

Oh ok, looks like the export function is necessary for Webpack to pick it up properly-- I'm guessing it is translated to one of these strange lines like this exports['default'] = UniversalRenderer; which is somehow used in app.server? I was just used to every export of a file be complemented by an import in another file to actually use it.

from reactgo.

choonkending avatar choonkending commented on May 2, 2024

@gsccheng Yep!
Webpack bundles the entire App, and because I'm exporting it as a function, we supply it arguments to be used here

// Import the webpack emitted bundle
var App = require('../../public/assets/app.server');
// ...
// Passing in data to bootstrap our alt Stores and url for react-router
var html = App(JSON.stringify(res.locals.data || {}), req.url);

Hope that helps.

from reactgo.

gsccheng avatar gsccheng commented on May 2, 2024

Thanks guys for your quick responses and concern! It truly feels good to know that there are people there to help, especially when you may be a bit shy broadcasting out into the world, and tackling something complicated (at least for me).

@choonkending What I meant was more about the export of universalRenderer(alt, routes, html); in app/app.js, (not the export of ../../public/assets/app.server). Nothing seemed to explicitly import that app/app.js file. Yet, this is okay because Webpack still bundled it and universalRenderer(alt, routes, html); is still used.

It looks like it is because in webpack.config.js we have this section

    name: "server-side rendering",
    context: path.join(__dirname, "app"),
    entry: {
      app: "./app",
      header: "./elements/Header.react"
    },
    target: "node",
    output: {
      // The output directory as absolute path
      path: assetsPath,
      // The filename of the entry chunk as relative path inside the output.path directory
      filename: "[name].server.js",

that essentially imports it, specifically through app: "./app",. There's also the equivalent section in this config file to produce the app.js output for the client side. Is this correct?

from reactgo.

choonkending avatar choonkending commented on May 2, 2024

@gsccheng Spot on! :)

from reactgo.

choonkending avatar choonkending commented on May 2, 2024

@gsccheng I'm closing this issue. If you have any questions, feel free to open another one or join our Gitter room!

from reactgo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.