是否可以使用php命令更新js文件?

时间:2017-03-16 14:56:16

标签: javascript php

我有script.js文件。它有以下数组

的script.js

  'COntent': function() {

            var contentFacts = {

                blocks: {

                    'block1': {

                        name: 'yleow',

                        title: 'H2',

                        type: 'content'

                    }

                }

            };

        }

    },

我在我的php中尝试了这样,但它不起作用:(

$lines = file($path.'/script.js');
$lines[64] = "'block2': {name: 'yleow',title: 'H2',type: 'content'}"

file_put_contents($path.'/script.js', implode($lines));

我想为这个数组添加另一个元素调用block2。如何使用PHP更新我的script.js文件功能? 是否可以使用file_put_contents?请建议

1 个答案:

答案 0 :(得分:1)

JavaScript是数据库或任何其他结构化数据格式的非常的替代品。在这种情况下甚至更多,因为您正在尝试将内容注入源代码

您可能需要的是代码之外的某种形式的结构化数据,例如JSON文件或SQLite数据库。

PHP支持从JSON解析和序列化:

可能的解决方案

contentFacts放入单独的JSON文件

{
  "blocks": {
    "block1": {
      name: 'yleow',
      title: 'H2',
      type: 'content'
    }
  }
}

使用PHP操作JSON

$json = file($path.'/blocks.json');

$blocks = json_decode($json, true);

$blocks['block2'] = array(
  'name'  => 'blue',
  'title' => 'h3',
  'type'  => 'content'
);

回写JSON文件

$adapted_json = json_encode($blocks);

file_put_contents($path.'/blocks.json');

现在你需要把它放到你的JavaScript部分,我假设在客户端上。您可以通过从服务器请求它来执行此操作:

const contentPromise = fetch('/path/to/blocks.json');

contentPromise.then((blocks) => {
  // Do something with those blocks. (render them to the page?)
});