$cache[$key] = empty($arr) ? NULL : $arr; return $cache[$key]; } // 门户 获取需要在频道显示的栏目主题数据 function portal_channel_thread($fid) { global $forumlist; if (empty($fid)) return NULL; $orderby = array('tid' => 1); $page = 1; // 遍历所有在频道显示内容的栏目 $category_forumlist = channel_category($fid); $arrlist = array(); $forum_tids = array(); $tidlist = array(); if ($category_forumlist) { foreach ($category_forumlist as &$_forum) { // 频道显示数据 $arrlist['list'][$_forum['fid']] = array( 'fid' => $_forum['fid'], 'name' => $_forum['name'], 'rank' => $_forum['rank'], 'type' => $_forum['type'], 'url' => $_forum['url'], 'channel_new' => $_forum['channel_new'], ); $forum_thread = thread_tid__find(array('fid' => $_forum['fid']), $orderby, $page, $_forum['channel_new'], 'tid', array('tid')); // 最新信息按栏目分组 foreach ($forum_thread as $key => $_thread) { $forum_tids[$key] = $_thread; } unset($forum_thread); } $tidlist += $forum_tids; } unset($category_forumlist); // 获取属性对应的tid集合 list($flaglist, $flagtids) = flag_thread_by_fid($fid); empty($flagtids) || $tidlist += $flagtids; unset($flagtids); // 频道置顶 $stickylist = sticky_list_thread($fid); empty($stickylist) || $tidlist += $stickylist; // 在这之前合并所有二维数组 tid值为键/array('tid值' => tid值) $tidarr = arrlist_values($tidlist, 'tid'); // 在这之前使用$tidarr = array_merge($tidarr, $arr)前合并所有一维数组 tid/array(1,2,3) if (empty($tidarr)) { $arrlist['list'] = isset($arrlist['list']) ? array_multisort_key($arrlist['list'], 'rank', FALSE, 'fid') : array(); return $arrlist; } $tidarr = array_unique($tidarr); $pagesize = count($tidarr); // 遍历获取的所有tid主题 $threadlist = well_thread_find_asc($tidarr, $pagesize); // 遍历时为升序,翻转为降序 $threadlist = array_reverse($threadlist); foreach ($threadlist as &$_thread) { // 各栏目最新内容 isset($forum_tids[$_thread['tid']]) AND $arrlist['list'][$_thread['fid']]['news'][$_thread['tid']] = $_thread; // 全站置顶内容 isset($stickylist[$_thread['tid']]) AND $arrlist['sticky'][$_thread['tid']] = $_thread; // 首页属性主题 if (!empty($flaglist)) { foreach ($flaglist as $key => $val) { if (isset($val['tids']) && in_array($_thread['tid'], $val['tids'])) { $arrlist['flaglist'][$key][array_search($_thread['tid'], $val['tids'])] = $_thread; ksort($arrlist['flaglist'][$key]); $arrlist['flag'][$_thread['tid']] = $_thread; } } } } unset($threadlist); if (isset($arrlist['sticky'])) { $i = 0; foreach ($arrlist['sticky'] as &$val) { ++$i; $val['i'] = $i; } } if (isset($arrlist['flag'])) { $i = 0; foreach ($arrlist['flag'] as &$val) { ++$i; $val['i'] = $i; } } if (isset($arrlist['flaglist'])) { foreach ($arrlist['flaglist'] as &$val) { $i = 0; foreach ($val as &$v) { ++$i; $v['i'] = $i; } } } isset($arrlist['list']) AND $arrlist['list'] = array_multisort_key($arrlist['list'], 'rank', FALSE, 'fid'); return $arrlist; } ?>javascript - Why do we need Express server when we have a backend ready already - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Why do we need Express server when we have a backend ready already - Stack Overflow

programmeradmin0浏览0评论

I am quite new to javascript and web application environment. I have seen a react web application project which had a public directory, a client directory and a server directory. I have few question

  1. Why do we need an express server file setup in the frontend project if we already have backend APIs ready and backend server ready

  2. Do we need an express server if we make the frontend on react and call the APIs to fetch the data for application.

  3. Isn't the backend server and express server in the frontend project are same?

I am quite new to javascript and web application environment. I have seen a react web application project which had a public directory, a client directory and a server directory. I have few question

  1. Why do we need an express server file setup in the frontend project if we already have backend APIs ready and backend server ready

  2. Do we need an express server if we make the frontend on react and call the APIs to fetch the data for application.

  3. Isn't the backend server and express server in the frontend project are same?

Share Improve this question edited Jan 31, 2017 at 6:42 EdG asked Jan 31, 2017 at 6:33 EdGEdG 2,3499 gold badges52 silver badges110 bronze badges 2
  • The server usually is just an automation script that allows you to not rebundle the code on every change, and sometimes does some "compiling". – user2345 Commented Jan 31, 2017 at 6:37
  • 2 Also you need an express server when you want to do server side rendering with react. If you are very new you should use a stated kit like: mern.io/documentation.html – Hosar Commented Jan 31, 2017 at 7:33
Add a comment  | 

3 Answers 3

Reset to default 9

Why do we need an express server file setup in the frontend project if we already have backend APIs ready and backend server ready

You don't.

You need an HTTP server to listen for and respond to any Ajax requests you make from your client side code.

You need an HTTP server to listen for and respond to any requests for the HTML documents and static resources (JS, CSS, images, etc) that your pages need.

These can be the same HTTP server, different HTTP servers, written with Express or not written with Express.

React tutorials tend to ignore mentioning this and just dive in showing how to use Express for everything. Don't read too much into that.

Do we need an express server if we make the frontend on react and call the APIs to fetch the data for application.

No. See above.

Isn't the backend server and express server in the frontend project are same?

Maybe. It is up to you. See above.

There is no such thing as a "backend server" and a "frontend server", a simple web application is composed of two main parts:

1/ an application that serves html pages, which runs on a backend, so it is usually called a server, but a typical cloud server nowadays can run hundreds of different serving apps at the same time

2/ a frontend, which is typically a complex piece of JavaScript software and html pages that are dynamically send to the user browser and execute locally

The minimum that you require to have a working website is a server application that will return one or several html pages upon user request. A typical React + Node project is organized as follow:

  • A server directory: which contains all the code for the serving app - the one returning the webpages, it can also contains code that handle the REST API, in case your client app requires dynamic data or if your server connect to a database. Note that the webpage server and the API server could be two different- or more - applications.

  • You usually dont want to share to users your server code, so typically you have a public directory that contains the html pages and this is the only location on the disk - theoretically - that can be access by users. This directory can also contains required images and resources needed by the webpages, it is also called static resources

  • To keep thing more organized, the code of the frontend application is placed in a client directory but on production is usually bundled in one or few files, depending on the size of the app, and also placed in the public directory, so it contains everything needed to serve the app.

Hope it helps

We don't need an Express server, however, adding it comes with great benefits:

  1. It helps add compression to an angular / react application that uses only in-memory server (if that is your case).

  2. Defines base path where to serve static files for your project and can also add gzip compression headers for each of the request so that the server returns the compressed versions.

  3. Helps you parse your API calls to the correct format expected by the UI so that the parsing logic stays in the express server and not the UI. This is helpful in the event that the API response changes in the future, or when the final backend endpoint changes, no need to modify the UI, but the route in the express server.

I have found out these and other benefits while looking how to add compression to an angular application (turns out you cannot without express or an actual web server).

发布评论

评论列表(0)

  1. 暂无评论