小编Abh*_*aha的帖子

创建扩展名为.php的javascript文件

我一直在单独的.js文件中编写javascript函数.在我的上一个项目中,javascript文件的数量更多,因此页面加载速度较慢,因为请求数量更多.因此,出于实验目的,我使用.php扩展名转换了几个.js文件,并使用include语句添加它们.这样加载时间性能更好.在.php文件中编写javascript有很多好处.我可以访问php变量并轻松将它们传递给javascript.

我的疑问是,在.php文件中编写javascript然后包含它们有什么缺点吗?

我的理解是,当页面加载时,它调用javascript文件并并行执行php部分.所以我们编写onload函数.

javascript php

5
推荐指数
2
解决办法
3053
查看次数

React-Router Router.HistoryLocation刷新页面

我正在研究React-Express-Node应用程序并专注于SPA.我正在使用react-router.

我的server.js文件看起来像这样(只有路由部分):

app.use(function(req, res, next) {

    Router.run(routes,function(Handler, state) {
        var ele = React.createElement(Handler);
        res.render(path.join(__dirname +  '/public/index'), {html: html});
    });

    next();

});
Run Code Online (Sandbox Code Playgroud)

而routes文件有这个代码(粘贴主要部分):

module.exports = (
    <Route name="app" path="/" handler={Main}>
        <Route name="about" path="about" handler={About}/>
        <Route name="about/id" path="about/:id" handler={About}/>
        <DefaultRoute name="default" handler={Home} />
    </Route>
);
Run Code Online (Sandbox Code Playgroud)

而client.js看起来像这样:

Router.run(routes, function(Root,state){
    React.render(<Root />,document.getElementById('app'));
});
Run Code Online (Sandbox Code Playgroud)

此设置正常,没有任何问题.

现在,我想使用History API pushstate,以便我可以拥有更好的URL并摆脱#.为此,我Router.HistoryLocation在client.js中添加了第二个参数并且它可以工作,它会删除#并提供干净的URL.但是,我的页面刷新了我不想要的东西.

我已经搜索过这个并找到了几个解决方案,但他们要么使用Flux,要么使用自定义路由器.我肯定错过了一些与国家有关但却无法弄清楚的事情.有人能指出我正确的方向吗?

node.js express reactjs react-router

5
推荐指数
1
解决办法
2255
查看次数

用于删除特定嵌套路径处的对象的类型

type Tail<T extends any[]> = ((...t: T) => void) extends ((
  h: any,
  ...r: infer R
) => void)
  ? R
  : never;

type DeepOmit<T, Path extends string[]> = T extends object
  ? {
      0: Omit<T, Path[0]>;
      1: {
        [K in keyof T]: K extends Path[0] ? DeepOmit<T[K], Tail<Path>> : T[K];
      };
    }[Path['length'] extends 1 ? 0 : 1]
  : T;
Run Code Online (Sandbox Code Playgroud)

我有上面的类型,效果很好。我已经这样测试过:

type A = DeepOmit<{ a: { b: { c: 1 } } }, ['a', 'b', 'c']>;

// { …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-generics

0
推荐指数
1
解决办法
470
查看次数