construct-js uses DataView under the hood. I wrote construct-js to ease working with binary data by allowing you to name and reference sections, and handle things like endianess easily in one place. With a DataView, I still need to calculate offsets into a structure manually, whereas construct-js has .getOffset(name) and .getDeepOffset(path). If performance is key however, use the lowest level of course.
Both implementations are very optimized and fast. Also DataView offers working with 64-bit values using the new BigInt type [2].
Here [3] a short example on how you can quickly build C-like structures in JavaScript
[0] DataView: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
[1] TextEncoder: https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder
[2] BigInt: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
[3] C-like Structures: https://jsfiddle.net/5tz0hsjq/