我刚刚开始学习React.js + Redux,我发现许多前端项目使用npm
作为包管理器。
让我们以此项目为例 - counter。
它包含package.json
file。如果我们查看此文件的内容,我们会看到其中包含devDependencies
和dependencies
条目。
"dependencies": {
"react": "^0.14.7",
"react-dom": "^0.14.7",
"react-redux": "^4.2.1",
"redux": "^3.2.1"
},
"devDependencies": {
"babel-core": "^6.3.15",
"babel-loader": "^6.2.0",
"babel-preset-es2015": "^6.3.13",
"babel-preset-react": "^6.3.13",
"babel-preset-react-hmre": "^1.1.1",
"babel-register": "^6.3.13",
"cross-env": "^1.0.7",
"enzyme": "^2.0.0",
"expect": "^1.6.0",
"express": "^4.13.3",
"mocha": "^2.2.5",
"node-libs-browser": "^0.5.2",
"react-addons-test-utils": "^0.14.7",
"webpack": "^1.9.11",
"webpack-dev-middleware": "^1.2.0",
"webpack-hot-middleware": "^2.9.1"
}
虽然我知道devDependencies
和dependencies
之间有什么区别但我不明白为什么该项目会在{{react
,react-dom
,redux
下列出1}}部分。根据我的理解,它是一个前端项目,不需要在服务器上安装任何可以在生产中工作的东西。
答案 0 :(得分:0)
正如@aarosil所指出的,npm
并不关心前端或后端。它只是一个包管理器。
所以这一切都归结为项目结构。看一下你给出的例子(React counter示例),这是一个在浏览器中运行的非常小的演示。它使用webpack来构建项目,在这种情况下,它由一个JS包组成,该组件由浏览器&在浏览器中运行。此捆绑包包含您在package.json
文件中看到的依赖项,这些依赖项也在浏览器中运行。
您可以轻松使用npm
来构建"后端"包在服务器端使用。在这种情况下,依赖关系可能不包括react
等(当然,除非你想在服务器上呈现页面)