[英]client - server architecture structure (with node js) - where to put the index.html file?
我已经构建了一个服务器客户端应用程序(nodejs-在服务器上,angular-在客户端上)。
我曾经将所有代码都放在一个项目(一个文件夹)中,但后来我觉得将其按逻辑划分为服务器文件夹和客户端文件夹更有意义。
我希望断开服务器代码和客户端代码之间的所有依赖关系,从某种意义上说,双方可以独立存在。
问题:
它显然与客户端有关,但是服务器(expressJS)在服务器时正在加载它。
如何使server.js意识到这一点?
该代码不起作用:
var app = express();
app.use(bodyParser.json());
app.use('/',express.static(__dirname));
app.use('/scripts', express.static(path.join(__dirname,
'node_modules')));
app.get('/', function (req, res) {
res.sendFile(express.static(path.join(__dirname + '../client/index.html')));
});
通常对于快速应用程序,您将有一个“公共”文件夹,其中包含您的客户资产,index.html是其中之一。
app.use('/',express.static(path.join(__dirname, '/public')));
然后,运行节点服务器,打开浏览器并将其指向该服务器,然后express将在“ public”文件夹中提供“ index.html”。
解决步骤
client
文件夹重命名为public
public
拖动到server
文件夹中,使其类似于server/public
app.use('/',express.static(__dirname));
到app.use('/', express.static(path.join(__dirname, '/public')));
请注意 : app.use('/',express.static(__dirname));
应该避免,您正在向公众提供整个服务器目录。
如果您想更好地查看项目布局。 看看yoeman.io,特别是它具有用于快递的项目模板。
Yeoman帮助您启动新项目,规定最佳实践和工具来帮助您保持生产力。
var app = express();
app.use(bodyParser.json());
app.use('/',express.static(__dirname));
//it will serve all files in client directory under the '/' route
app.use('/', express.static(path.join(__dirname, '/client'));
});
//and the client side scripts installed through npm will be served under '/scripts' route
app.use('/scripts', express.static(path.join(__dirname, '/client/node_modules')))
将客户端模块放在单独的文件夹中是很好的,即在client
目录中也有node_module
文件夹,在那里您应该安装所有应从客户端加载的模块。 除此之外, client
文件夹似乎是公共的,因此值得为整个文件夹提供服务。
如果要为客户端安装模块,请转到终端中的'/client/node_modules'
目录并运行npm。 因此,如果您使用的是Linux,则:
cd client/
npm init
npm install YOUR_DESIRED_MODULE
如果是用于服务器端的模块,请在根目录中安装模块
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.