我试图在Node上构build一个同构的应用程序,最初从服务器向客户端呈现React,并通过Webpack将其绑定到客户端呈现和UI目的。 但是,我有分离客户端与服务器端的问题。 在客户端捆绑(并且正常工作)的React组件也在服务器端运行。 因此,试图更改状态或加载数据是不可能的,因为组件在服务器和客户端上运行。 我如何有效地分开这些? 或者,我必须为客户端和服务器创build一个单独的组件文件夹(对于服务器,省略数据处理)。 不知道如何在Node中正确完成一个平滑运行的同构应用程序。
所以我正在build立一个基于文章的应用程序使用反应和expression。 我的应用程序由3个静态页面和1个dynamic文章页面组成。 在这个时候,我的文章的数据来自RSS源。 dynamic文章页面显示不同的文章,取决于哪些文章RSS项目通过道具传递给它。 我的问题是: SSR如何与search引擎爬虫一起了解我的文章? 所以如果我要search“我的网站Article Foo”或“我的网站文章栏”,那么它会如何知道这些不同的文章存在? 因为就目前而言,这篇文章的url是这样的: www.mySite.com/articles?articleId=1 www.mySite.com/articles?articleId=2 www.mySite.com/articles?articleId=3 即使我没有使用RSS提要,也不使用数据库,这个概念是如何工作的? 任何帮助或build议表示赞赏,谢谢你提前。 PS。 我不确定这是否是正确的堆栈交换站点,如果有更合适的堆栈交换站点,请让我知道,所以我可以移动它。
我发现这些属性在package.json中以下划线作为前缀。 他们用于什么? 为什么在属性上加下划线? "_from": "react-scripts@0.9.3", "_id": "react-scripts@0.9.3", "_inCache": true, "_location": "/react-scripts", "_nodeVersion": "6.0.0", "_npmOperationalInternal": { "host": "packages-18-east.internal.npmjs.com", "tmp": "tmp/react-scripts-0.9.3.tgz_1488303928068_0.6415497597772628" }, "_npmUser": { "name": "gaearon", "email": "dan.abramov@gmail.com" },
我正在尝试将一个nodejs应用程序部署到heroku,当我检查heroku logs时出现以下错误, sh:1:npm-run-all:找不到 我的package.json看起来像这样 { "name": "web-training", "version": "1.0.0", "description": "web-training", "scripts": { "prestart": "babel-node tools/startMessage.js", "start": "npm-run-all –parallel open:src lint:watch test:watch", "open:src": "babel-node tools/srcServer.js", "lint": "node_modules/.bin/esw webpack.config.* src tools", "lint:watch": "npm run lint — –watch", "test": "mocha –reporter spec tools/testSetup.js \"src/**/*.test.js\"", "test:watch": "npm run test — –watch", "clean-dist": "npm run remove-dist && mkdirp dist-server/dist", […]
我尝试使用React,Node,Wepback 2在本地运行我的React应用程序。每当我遇到不是/我得到404的路由时,我的目标是能够运行我的节点服务器,让webpack-dev-服务器运行,使用browserHistory并返回我的webpack的historyApiFallback工作。 目前的工作: 如果我只运行webpack-dev-server而没有节点服务器,那么browserHistory工作正常,没有404s。 如果我用hashHistory运行节点,它工作正常,没有404s。 所以这就排除了我的路线不工作。 这里是一些代码: server.js const express = require('express'); const expressGraphQL = require('express-graphql'); const schema = require('./schema'); const app = express(); app.use('/graphql', expressGraphQL({ schema, graphiql: true })); const webpackMiddleware = require('webpack-dev-middleware'); const webpack = require('webpack'); const webpackConfig = require('../webpack.config.js'); app.use(webpackMiddleware(webpack(webpackConfig))); app.listen(process.env.PORT || 5000, () => console.log('Listening')); webpack.config.js const webpack = require('webpack'); const […]
我有一个使用UI组件的自定义“主题”的React.JS项目。 这个主题还提供了构build脚本(webpackconfiguration,babelconfiguration等)。 我想在这个项目中开始使用Flow。 我安装了所需的npm包,并将flow添加到babel的预设中,然后将props = {mytestprop: string}到我的一个React类中。 Webpack成功地编译了我的代码,但是types提示没有被剥离! 当然,浏览器不能执行这个代码 – 当我尝试运行它时,会引发ReferenceError: string is not defined 。 .babelrc的当前预设列表是: ["es2015", "react", "stage-2", "flow"] 。 我确定这是babel使用的实际列表,因为如果我删除前3个预设中的任何一个,编译将失败。 你有什么想法可能导致这种行为剥离streamtypes?
npm运行生成后,我上传生成文件夹github,它不起作用。 检查这个链接 GitHub上 为什么?
使用Thunk中间件创build我的商店 import { createStore, applyMiddleware, compose } from 'redux'; import thunk from 'redux-thunk'; const store = createStore( reducer, initialState, applyMiddleware(thunk) ); 并创造我的行动,呼吁一个承诺 export function getArticle(url) { return function (dispatch) { fetchArticle(url).then( article => dispatch(setArticle(article)), ); }; } function fetchArticle(url) { return new Promise((resolve, reject) => { request .get(url) .end( (err, res) => { if (err […]
我已经在ES6中构build了一个反应应用程序,并创build了一个bundle.js并将其锚定在由django提供的HTML页面中。 应用程序在节点服务器上运行的开发过程中工作正常,但是当页面由django链接到静态bundle.js文件时,出现以下错误: VM1517:1 Uncaught Error: Cannot find module "./src/index.js" 请注意, index.js是此反应应用程序的入口点。 任何帮助表示赞赏! 谢谢! webpack.config.js如下: module.exports = { entry: [ './src/index.js' ], output: { path: __dirname, publicPath: '/', filename: 'bundle.js' }, module: { loaders: [{ exclude: /node_modules/, loader: 'babel' }] }, resolve: { extensions: ['', '.js', '.jsx'] }, devServer: { contentBase: './' } }; 更新:@kaylus运行webpack的结果如下: ERROR […]
我有一个使用react-router的通用NodeJS,Express,React / Redux应用程序。 它从服务器端在应用程序的初始请求和客户端上对来自react-router的后续请求进行渲染。 我的routes.js文件: <Route path="/" component={App}> <Route path="/main" component={Main}/> <Route path="/login" component={Login}/> </Route> 我有一个通配符高速路由匹配这个反应路线,并发送组件标记回模板: import routes from '../routes'; app.get('*', (req, res) => { match( { routes, location: req.url }, (err, redirectLocation, renderProps) => { let markup; if (renderProps) { markup = renderToString( <Provider store={store}> <RouterContext {…renderProps}/> </Provider> ); } else { markup = […]