Ох, я постараюсь тезисно
Вам нужен чуть более умный бэкенд (можно на любом языке, включая Node.js)
Вместо html-файлов вы пишите шаблоны. Если у вас нода+Express.js, у него вроде был встроенный шаблонизатор ejs, есть ещё pug и много других (гуглить по Node шаблонизаторы). Если у вас на фронте React/Angular/View - лучше погуглить "название-библиотеки server side rendering", шаблонизация в них встроена
Абстрактно, ваш бэкенд получает запрос, идёт в базу данных или какой-нибудь JSON-файл за данными, а потом передаёт эти данные в шаблонизатор
В шаблонах можно использовать циклы, условия и разные другие плюшки из программирования. Вам не нужно писать 10 тэгов "a" для вывода списка, ваш список - стандартный массив, вы проходитесь по нему циклом и выводите данные в тэг "a". Условно:
myItems.map(item => (
<a href={item.link}>{item.text}</a>
))
Нужно поменять что-то в ссылках - меняете в одном месте
Нужно добавить товар или другие сущности - добавляете их данные в базу или JSON