{"id":13814507,"url":"https://github.com/didi/Tips","last_synced_at":"2025-05-15T03:34:39.196Z","repository":{"id":37439003,"uuid":"216746072","full_name":"didi/Tips","owner":"didi","description":null,"archived":false,"fork":false,"pushed_at":"2024-08-28T01:57:16.000Z","size":2037,"stargazers_count":187,"open_issues_count":1,"forks_count":14,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-11-19T09:47:50.670Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/didi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-10-22T07:07:23.000Z","updated_at":"2024-09-23T08:54:05.000Z","dependencies_parsed_at":"2022-08-18T20:30:35.968Z","dependency_job_id":null,"html_url":"https://github.com/didi/Tips","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FTips","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FTips/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FTips/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/didi%2FTips/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/didi","download_url":"https://codeload.github.com/didi/Tips/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254266521,"owners_count":22042123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T04:02:05.086Z","updated_at":"2025-05-15T03:34:38.831Z","avatar_url":"https://github.com/didi.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Tips - 文案管理平台\n\n\u003e [English Introduction](./README_en.md)\n\n## Tips是什么？\nTips是一个静态文案管理平台。用于修改Web页面的静态文案，支持文案国际化，并提供提示信息的UI展示。它的目的是解决前端开发者频繁的静态文案修改问题，避免因为简单的文案修改而发起复杂的上线流程。\n## Tips可以做什么？\n下面是一个简单的演示，展现了接入文案管理平台后你可以通过如下的方式去修改页面上的文案信息。\n- 提示内容文案修改\n\u003cimg src=\"./doc/static/tips.gif\"\u003e\n有权限的用户可以看到，在页面的右下角有一个开关按钮，打开按钮页面上会出现编辑的红色按钮，点开按钮即可修改提示文案信息，提交保存后刷新页面即可看到修改后的内容。同时提示信息的容器UI展示也是平台提供。\n\n- 页面内容文案修改\n\u003cimg src=\"./doc/static/docs.gif\"\u003e\n\n页面内容文案的修改方式和提示信息修改一样，但是不同的是多了一个发布的操作，因为页面内容要比提示的要求更严格一些，修改后会直接影响用户的直接观感。所以这里我们对线上和线下环境做了区分，未发布前只可以在线下环境看到，详情请戳[这里](./doc/onlineAndOffline.md)。\n\n- 文案国际化\n\u003cimg src=\"./doc/static/international.gif\"\u003e\n在demo演示中提供了中文和英文两个版本的语言，点击按钮可以看到不同语言内容的切换。\n\n## 如何查看demo\n- 安装node环境，版本v8及已上\n- 安装数据库mongodb，版本v4\n- 创建 `tips` 数据库\n- 启动项目：`sh start.sh`\n- 在浏览器打开localhost:8090 ---\u003e 点击新增项目 ---\u003e 创建项目，系统名：tips，多语言：中文和英文，提交保存 ---\u003e 点击导航栏的demo，跳到demo页可进行文案修改\n\n## 如何部署使用\n\n### 部署\n\n#### tips-web \n\n- 简单介绍：该模块是一个简单的Web层，提供文案数据的增删改查接口，即所有的UI操作接口都调用这里。在上面有提到有权限的用户才可以直接对文案进行编辑，所以平台涉及到权限控制的地方都需要用户信息，这里由于每个公司机构关于用户信息的管理都有自己的一套机制，所以需要使用者单独实现。实现完成后将服务部署即可。\n- 部署\n- 第一步：修改`tips-web/src/config/index.js`中的MongoDB数据地址，和真实服务的端口；\n- 第二步：将服务部署；\n- 第三步：启动服务，`npm run start`;\n#### tips-ui\n- 简单介绍：该模块为管理前端模块，在这里对接入平台的文案信息进行管理。同样也需要调用Web层的关于用户信息操作的接口，这部分需要自己单独实现。\n- 部署\n- 第一步：打包，`npm run build`；\n- 第二步：将打包后的静态文件部署至nginx或其它静态文件服务；\n#### tips-sdk\n- 简单介绍：该模块是用webpack管理的一个`js SDK`，我们在上面图片中看到的关于修改文案的操作都在此模块实现，该模块打包后的文件最终以CDN服务的形式引用在接入平台中。\n- 部署\n- 第一步：修改`tips-sdk/src/config/index.js`中的server地址，改为`tips-web`服务的地址；\n- 第二步：我们使用webpack对SDK进行管理，在`webpack.config.js`文件中写了打包后的路径，你只用去修改里面的路径，即可打包至你自己的目录；\n- 第三步：将打包后的sdk进行部署到CDN服务；\n### 使用\n当上面的部署流程都完成，服务可以正常访问后，我们就可以让需要文案管理的服务接入使用了。\n#### 第一步：创建接入系统\n\n在文案管理平台创建要接入平台的服务信息，如下图所示：\n\u003cimg src=\"./doc/static/createSystem.png\"\u003e\n\n表单字段解释：\n\n- 系统名：要接入的系统的唯一标识；\n- 域名：要接入系统的线上域名；\n- 管理员：可以对系统文案进行修改的成员；\n- 多语言：创建系统需要支持的语言版本，每个语言可以设置不同的管理员；\n\n#### 第二步：引用SDK\n\n在接入系统中引入SDK文件，并设置在创建系统时填写的系统名，放在\u003chead\u003e中（存在文档修改，为了避免页面空白，如果系统中不使用文档修改功能，可以不放在\u003chead\u003e中）。代码如下：\n```\n\u003cscript type=\"text/javascript\" data-service=\"xxx\" src=\"/tips.js\"\u003e\u003c/script\u003e\n```\n参数解释：\n- `data-service`：此处传入第一步创建时填写的系统唯一标识；\n- `src`：此处地址为`tips-sdk`打包后静态文件的部署地址；\n\n#### 第三步：调用SDK\n\n在接入系统的前端代码中调用初始化函数，传入当前系统登录用户名和语言类型，代码如下：\n```\ntry {\n  if (window.Tips \u0026\u0026 Object.prototype.toString.call(window.Tips.init) === '[object Function]') {\n    window.Tips.init(username, language);\n  } else {\n    document.addEventListener(\"TipsSDKReady\", function() {\n      window.Tips.init(username, language);\n    }, false);\n  }\n} catch(e) {\n  console.log(e);\n}\n```\n可选语言的标识：\n\n| 语言 | key |\n| :------| :------ |\n| 中文 (中国) |\tzh_CN |\n| 英文 (澳大利亚和新西兰) |\ten_US |\n| 日文 |\tja_JP |\n| 西班牙文 (墨西哥) |\tes_MX |\n| 葡萄牙文 (巴西) |\tpt_BR |\n\n\n#### 第四步：埋点\n\n在接入系统的前端代码中埋点，以前端页面路由为维度，每个路由下埋点的id不能重复。\n```\n\u003cspan data-tip-id=\"demo-1\" class=\"btn\"\u003e按钮\u003c/span\u003e\n\u003cspan data-tip-id=\"demo-2\"\u003etips是一个静态文案管理系统。用于修改Web端页面的静态文案，支持文案国际化，并提供提示信息的UI展示。\u003c/span\u003e\n```\n#### 第五步：切换语言\n\n调用切换语言代码如下：\n```\ntry {\n  window.Tips.changeLanguage(language);\n} catch(e) {\n  console.log(e);\n}\n```\n已上涉及到代码的都可查看[demo](./demo/static/index.html)中如何使用,其它一些附加功能请看[这里](./doc/otherFUnc.md)\n\n## 协议\n\nTips 基于 Apache 协议进行分发和使用，更多信息参见[协议文件](./LICENSE)。 \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdidi%2FTips","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdidi%2FTips","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdidi%2FTips/lists"}