Javascript 客户机-服务器体系结构(带有节点js)-index.html文件放在哪里?
我已经构建了一个服务器客户端应用程序(nodejs-在服务器上,angular-在客户端) 我曾经将所有代码都放在一个项目(一个文件夹)中,但后来我发现,按逻辑将其划分为服务器文件夹和客户端文件夹对我来说更有意义 我渴望断开服务器代码和客户机代码之间的所有依赖关系,因为每一方都可以独立运行 问题:Javascript 客户机-服务器体系结构(带有节点js)-index.html文件放在哪里?,javascript,angularjs,node.js,architecture,Javascript,Angularjs,Node.js,Architecture,我已经构建了一个服务器客户端应用程序(nodejs-在服务器上,angular-在客户端) 我曾经将所有代码都放在一个项目(一个文件夹)中,但后来我发现,按逻辑将其划分为服务器文件夹和客户端文件夹对我来说更有意义 我渴望断开服务器代码和客户机代码之间的所有依赖关系,因为每一方都可以独立运行 问题: 我应该把index.html放在哪里 它显然与客户端相关,但服务器(expressJS)在加载服务器时正在加载它 假设我将index.html文件放在客户机文件夹中,如下图所示 如何让server.j
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')));
});
最好在单独的文件夹中为客户端模块提供服务,即在client
目录中也有node\u module
文件夹,您应该在那里安装所有应从客户端加载的模块。除此之外,client
文件夹似乎是公用的,因此值得为整个文件夹提供服务
如果要为客户端安装模块,请转到终端中的'/client/node\u modules'
目录并运行npm。因此,如果您是linux,那么:
cd客户端/
npm init
npm安装所需的模块
如果是服务器端模块,请在根目录中安装模块,通常使用express apps,您将拥有一个“公共”文件夹,其中包含客户端资产,index.html就是其中之一
app.use('/',express.static(path.join(__dirname, '/public')));
然后,运行节点服务器,打开浏览器并将其指向该服务器,express将从“public”文件夹中提供“index.html”
修复步骤
- 将
文件夹重命名为client
public
- 将
拖动到public
文件夹中,使其类似于server
server/public
- 更改
toapp.use('/',express.static(_dirname))
app.use('/',express.static(path.join(uu dirname,'/public'))代码>
app.use('/',express.static(_dirname))代码>应该避免,因为您正在向公众提供整个服务器目录
如果您想更好地查看项目布局。
看看yoeman.io,特别是它有express的项目模板
Yeoman帮助您启动新项目,制定最佳实践
以及帮助您保持生产力的工具
您是否尝试过app.use('/',express.static(uu dirname+'/../client')代码>?您不必声明app.get(“/”,…
首先谢谢。它起作用了…第二-index.html这个名字被取消了?如果我想用我的index.html怎么办?我不知道你想访问url localhost:8080并得到页面my index.html
作为响应?在这种情况下,你为什么不按index.html重命名你的文件?是的“index.html”默认情况下,express static将检查public
文件夹中的“index.html”文件。如果您想将“/”路由到“my_index123.html”,我将查看更像这样的设置:谢谢,但是如果我将节点模块放在客户机中,那么属于服务器的所有模块(即mongodb…)呢?将这些模块安装到根目录中感谢您解决了这个问题。还有一个问题-我的客户端(angular)除了服务器上的npm模块之外还使用依赖项(客户端模块仅为客户端代码而关联,即angularAuth库)。我应该有npm模块目录(或者可能是bower模块)同样,在客户端?:D您有2个选项:1,创建一个“bower.rc”文件,将安装目录设置为public/bower\u components
,并从那里为用户资产提供服务。或者2.添加另一个express static行,以从bower\u components
提供资产,这两个选项都可以接受。
app.use('/',express.static(path.join(__dirname, '/public')));